ios - 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))
解决方案
如果您在 getSessionWithUserName andPassword 方法中查看 AWSCognitoIdentityUser,您将看到有一个由 migrationEnabled 布尔值驱动的三元运算符切换迁移身份验证。为了切换身份验证类型,只需像这样配置身份池:
let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration (
clientId: clientId,
clientSecret: nil,
poolId: userPoolId,
shouldProvideCognitoValidationData: false,
pinpointAppId: nil,
migrationEnabled: true
)
推荐阅读
- r - C 堆栈使用量太接近限制
- blockchain - 使用 indy-cli 创建池时出错
- python - 在 Python 中给定时间后退出尝试尝试
- html - 图像固定宽度的 css 浮动框中的 html+css 错误
- javascript - HMS AnalyticsKit Demo for Javascript 无法访问服务器
- php - Laravel 8.9.0 Auth Sacffolding 出现错误您的要求无法解决为一组可安装的软件包
- angular - 如何使 .position-sticky 停止在另一个角度组件(导航栏)下方?
- angular - Angular 8 在身份验证完成之前抑制 HTTP 调用
- r - 绘制参与者反应时间的直方图和点图?
- python - 显示分组依据结果,但将所有项目的不存在结果填充为 0