我正在使用“Cognito 用户池授权者”(无“AWS_IAM”选项,无自定义编码授权者)通过 API 网关调用 Lambda 方法并识别登录 iOS 客户端的用户。
在 Lambda 上,我使用从 Cognito 用户池授权者处获得的用户 IDevent.requestContext.authorizer.claims.sub
(将用户 ID 与某些 DynamoDB 项目一起存储)。
我现在需要将其与 iOS 客户端中登录用户的 ID 进行比较。
I found [AWSIdentityManager defaultIdentityManager].identityId
,但这(显然)返回了他身份ID(我可以在 AWS 控制台的 Cognito --> 联合身份 --> 身份浏览器中查找),这与“sub”id 不同我在 Cognito --> 用户池 --> 用户和组中看到
我可以通过 AWS iOS SDK 获取“sub”吗?
如果我无法获取它,我应该使用哪些其他 id 参数可以在 Lambda 和客户端上检索以识别当前客户端用户/发出 API 请求的用户?
看来我必须通过用户详细信息专门请求属性,如下所示:
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);
}
}];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)