• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如何在 iOS 上获取 Cognito 用户池 "sub"属性

[复制链接]
菜鸟教程小白 发表于 2022-12-12 13:17:05 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用“Cognito 用户池授权方”(无“AWS_IAM”选项,无自定义编码授权方)通过 API Gateway 调用 Lambda 方法并识别登录 iOS 客户端的用户。

在 Lambda 上,我使用通过 event.requestContext.authorizer.claims.sub 从 Cognito 用户池授权方获得的用户 ID(将用户 ID 与一些 DynamoDB 项目一起存储)。

我现在需要将其与 iOS 客户端中登录用户的 id 进行比较。

我找到了 [AWSIdentityManager defaultIdentityManager].identityId,但这(显然)返回了他 IdentityID(我可以在 Cognito 的 AWS 控制台中查找 --> Federated身份 --> 身份浏览器),与我在 Cognito 中看到的“子” id 不同 --> 用户池 --> 用户和组

我可以通过 AWS iOS 开发工具包获取“子”吗?

如果我无法获取它,我应该使用什么其他 id 参数来在 Lambda 和客户端上检索以识别当前客户端用户/发出 API 请求的用户?



Best Answer-推荐答案


看来我必须通过这样的用户详细信息专门请求属性:

AWSCognitoIdentityUserPool *pool = [AWSCognitoIdentityUserPool CognitoIdentityUserPoolForKey:AWSCognitoUserPoolsSignInProviderKey];
AWSCognitoIdentityUser *user = [pool currentUser];

NSString *mySub;

[[user getDetails] continueWithBlock:^id _Nullable(AWSTask<AWSCognitoIdentityUserGetDetailsResponse *> * _Nonnull task) {
    if(!task.error){
        AWSCognitoIdentityUserGetDetailsResponse *response = task.result;
        NSArray<AWSCognitoIdentityProviderAttributeType*> *userAttributes = response.userAttributes;
        for (AWSCognitoIdentityProviderAttributeType *attr in self.userAttributes) {
            if ([attr.name isEqualToString"sub"]) {
                mySub = attr.value;
            }
        }
    } else {
        NSLog(@"Error fetching Cognito User Attributes: %@", task.error.localizedDescription);
    }
}];

关于ios - 如何在 iOS 上获取 Cognito 用户池 "sub"属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43144135/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap