【发布时间】:2021-04-07 21:32:01
【问题描述】:
我正在使用 Amplify 框架将我的想法变为现实,到目前为止一切顺利,除了我坚持的一件事。
我让经过身份验证的用户将文件上传到 S3,我正在使用 Protected 访问级别,根据this,所有用户都可以读取受保护的,我已经设法上传文件并且在 Dynamo 表中保存一些信息。
存储文档说明如下:
受保护:所有用户均可读取,但只能由创建者写入 用户。文件存储在 protected/{user_identity_id}/ 下,其中 user_identity_id 对应于唯一的 Amazon Cognito 身份 ID 为该用户。
但是我无法匹配在受保护的 S3 中创建的 {user_identity_id} 与 Cognito 用户池中没有可用的信息,所以,我真的找不到知道哪些文件属于特定文件的方法用户,此外,我需要一种方法让我的 Admin 用户能够看到所有用户上传的文件。
另一方面,here,文档说可以通过传递 identityId 作为参数来检索文件,但是:
- 如何检索特定用户的 IdentityId?
- 如何根据 S3 中保存的 IdentityId 找到 CognitoUser?
我将不胜感激。
【问题讨论】:
-
您需要的是 cognito 联合身份。然后将 cognito 用户池设置为经过身份验证的提供者。
-
让我知道您是通过 API 还是 SDK 请求 s3?
-
@MahdiRidho 谢谢,如果联邦是指 Facebook 或 Google?然后不是,我使用的是认知身份池。对于 S3,我使用 aws-amplify 包,使用 Storage 类。
-
不,有 2 个认知者。用户池和联合身份。用户池是管理用户认证层,它会生成一个基于 oauth2 的令牌(jwt)。联合身份是管理用户身份的角色。每个用户都应该是使用 AWS 服务的角色。您应该使用用户池设置身份验证身份提供者。
-
因此,一旦登录成功并获得令牌,您将能够将令牌交换为 AWS 临时凭证作为身份验证身份角色。您可以根据定义的策略访问 AWS 服务
标签: amazon-web-services amazon-cognito aws-amplify