我正在使用“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 请求的用户?
看来我必须通过这样的用户详细信息专门请求属性:
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/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |