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

示例:利用 Lambda 触发器迁移 Android 用户

可使用用户迁移 Lambda 触发器轻松地将用户从现有用户管理系统迁移到您的用户池,而无需重置密码。

设置用户迁移 Lambda 触发器

在对您的 Android 应用程序进行改动之前,请首先为用户池设置用户迁移 Lambda。

要了解有关 Lambda 触发器的更多信息,请参阅 使用 Lambda 触发器自定义用户池工作流

有关使用 Lambda 触发器迁移用户的更多信息,请参阅 利用用户迁移 Lambda 触发器将用户导入用户池

Android 应用程序改动

将 AWSCognitoIdentityProvider Android 开发工具包更新为版本 2.6.15 或更高版本。

用户迁移身份验证流程

您可以对用户进行身份验证,比照旧系统验证其密码,并将他们的配置文件无缝迁移到您的用户池。但是,此服务需要旧密码,以避免密码重置。

开发工具包中的默认身份验证流程会实施安全远程密码 (SRP) 协议,不会通过网络发送任何密码。要在您的应用程序中启用用户迁移,请使用 USER_PASSWORD 身份验证流程,该流程会在身份验证期间通过加密 SSL 连接将您的密码发送至服务。用户迁移完成后,请使用默认 SRP 身份验证流程。

将身份验证类型设置为 USER_PASSWORD

authenticationDetails.setAuthenticationType("USER_PASSWORD");

身份验证类型在 getAuthenticationDetails() 回调处理程序中进行设置。

AuthenticationHandler authenticationHandler = new AuthenticationHandler() { @Override public void onSuccess(CognitoUserSession cognitoUserSession, CognitoDevice device) { // Successful authentication. } @Override public void getAuthenticationDetails(AuthenticationContinuation authContinuation, String username) { // Get user password. String password = getUserPassword(); // Add user credentials to Authentication Details. AuthenticationDetails authenticationDetails = new AuthenticationDetails(username, password, validationData); // Set the authentication type to use USER_PASSWORD flow. authenticationDetails.setAuthenticationType("USER_PASSWORD"); // Continue with authentication. authContinuation.setAuthenticationDetails(authenticationDetails); authContinuation.continueTask(); } @Override public void getMFACode(MultiFactorAuthenticationContinuation multiFactorAuthenticationContinuation) { // ... } @Override public void onFailure(Exception e) { // ... } @Override public void authenticationChallenge(ChallengeContinuation continuation) { // ... } };