首页 > 解决方案 > AWS cognito 登录在 iOS 中将 AuthFlow 设置为 USER_PASSWORD_AUTH

问题描述

我正在使用AWS Cognito 执行登录身份验证。登录成功后,我们得到以下请求正文:

请求正文:

> {"UserContextData":{"EncodedData":"eyJ..9”},”ClientMetadata":{"cognito:deviceName":"MacBookPro12-01","cognito:bundleShortV":"1.0.0",
> "cognito:idForVendor":"A6FD46FBB205","cognito:bundleVersion":"207",
>     "cognito:bundleId":"com.abc.Project-Dev","cognito:model":"iPhone", "cognito:systemName":"iOS","cognito:iOSVersion":"11.3"},
>     "AuthParameters":{"SRP_A":"a6..627","SECRET_HASH":"vr..Oo=", "USERNAME":"jay.dubey@abc.com”},**”AuthFlow":"USER_SRP_AUTH"**,
> "ClientId”:”123”}

现在,有一个场景,我必须将“AuthFlow”值设置为“USER_PASSWORD_AUTH”。如何才能做到这一点?

令人头疼的是,所有这些值都是在 Pod 中设置的。下面的代码打印上面添加的请求正文:

passwordAuthenticationCompletion?.set(result: AWSCognitoIdentityPasswordAuthenticationDetails(username: username, password: password))

标签: iosswiftxcodeamazon-web-servicesaws-sdk-ios

解决方案


如果您在 getSessionWithUserName andPassword 方法中查看 AWSCognitoIdentityUser,您将看到有一个由 migrationEnabled 布尔值驱动的三元运算符切换迁移身份验证。为了切换身份验证类型,只需像这样配置身份池:

  let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration (
        clientId: clientId,
        clientSecret: nil,
        poolId: userPoolId,
        shouldProvideCognitoValidationData: false,
        pinpointAppId: nil,
        migrationEnabled: true
    )

推荐阅读