如何通过 Cognito 用户池 ID 获取 Cognito 身份池 ID?

9
AWS Amplify存储文档中,有一节关于如何获取其他用户的对象的部分...
Storage.get('test.txt', { 
    level: 'protected', 
    identityId: 'xxxxxxx' // the identityId of that user
})

我该在哪里获取另一个用户的identityId?

我只能查询用户的Cognito用户池ID。是否有一种将用户池ID映射到身份ID的方法?


https://dev59.com/ZlIH5IYBdhLWcg3wc-Kx - mon
只是为了确认一下。您正在使用Cognito用户池作为身份提供者,登录到用户池并获取JWT令牌,然后使用该令牌来使用Cognito身份池。这正确吗? - mon
我有我的用户的Cognito用户池ID。我想获取他们的Cognito身份ID。 - Noel Llevares
用户池和身份池是完全不同的服务。您是否创建了一个身份池并定义了IAM角色以进行关联?请参见https://dev59.com/cVYO5IYBdhLWcg3wHeBo。 - mon
如果还没有,请查看https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-integrating-user-pools-with-identity-pools.html。 - mon
3个回答

9
您可以使用Auth.currentUserCredential方法获取身份标识ID。
import { Auth } from 'aws-amplify';

await Auth.signIn(username, password);
const credentials = await Auth.currentUserCredentials();
console.log("identityId", credentials.identityId);

3
最好将其作为idToken的一部分。 - bvj
这将为您提供当前已登录用户的身份ID。但问题是如何获取其他用户的身份ID... - undefined

1

-1

这个GitHub评论中有一个解决方法,您可以使用Cognito用户池ID而不是Identity ID作为S3文件夹名称。这样,您就不需要真正处理Identity ID。

经过更多的研究,我们发现您可以使用用户属性进行访问控制,因此,您可以使用主体标签指定自定义属性映射(我们将cognitoId映射到sub),而不是使用联合ID作为用户文件夹名称,并且在策略中,您可以使用这些标签动态引用资源:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接