Amazon Cognito
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用用户池进行身份验证

您的应用程序用户可以通过用户池直接登录,也可以通过第三方身份提供商 (IdP) 联合。用户池管理从通过 Facebook、Google 和 Amazon 进行的社交登录返回的以及从 OpenID Connect (OIDC) 和 SAML IdP 返回的令牌的处理开销。

在成功验证身份后,Amazon Cognito 会将用户池令牌返回到您的应用程序。您可以使用这些令牌向您的用户授予对您的服务器端资源或 Amazon API Gateway 的访问权限。或者,您可以用它们交换用于访问其他 AWS 服务的 AWS 凭证。

 身份验证概述

您的 Web 和移动应用程序的用户池令牌处理和管理在客户端上是通过 Amazon Cognito 开发工具包提供的。同样,如果存在有效的(非过期的)刷新令牌,Mobile SDK for iOS 和 适用于 Android 的 移动软件开发工具包 会自动刷新您的 ID 令牌和访问令牌,而且 ID 令牌和访问令牌至少有 5 分钟的剩余有效性。有关开发工具包以及适用于 JavaScript、Android 和 iOS 的示例代码,请参阅 Amazon Cognito 用户池开发工具包

在您的应用程序用户成功登录后,Amazon Cognito 会创建会话并返回经过身份验证的用户的 ID 令牌、访问令牌和刷新令牌。

JavaScriptAndroidiOS - SwiftiOS - Objective-C
JavaScript
// Amazon Cognito creates a session which includes the id, access, and refresh tokens of an authenticated user. var authenticationData = { Username : 'username', Password : 'password', }; var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData); var poolData = { UserPoolId : 'us-east-1_ExaMPle', ClientId : '1example23456789' }; var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData); var userData = { Username : 'username', Pool : userPool }; var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData); cognitoUser.authenticateUser(authenticationDetails, { onSuccess: function (result) { var accessToken = result.getAccessToken().getJwtToken(); /* Use the idToken for Logins Map when Federating User Pools with identity pools or when passing through an Authorization Header to an API Gateway Authorizer */ var idToken = result.idToken.jwtToken; }, onFailure: function(err) { alert(err); }, });
Android
// Session is an object of the type CognitoUserSession, and includes the id, access, and refresh tokens for a user. String idToken = session.getIdToken().getJWTToken(); String accessToken = session.getAccessToken().getJWT();
iOS - Swift
// AWSCognitoIdentityUserSession includes id, access, and refresh tokens for a user. - (AWSTask<AWSCognitoIdentityUserSession *> *)getSession;
iOS - Objective-C
// AWSCognitoIdentityUserSession includes the id, access, and refresh tokens for a user. [[user getSession:@"username" password:@"password" validationData:nil scopes:nil] continueWithSuccessBlock:^id _Nullable(AWSTask<AWSCognitoIdentityUserSession *> * _Nonnull task) { // success, task.result has user session return nil; }];