【问题标题】:Which ID to be used to validate user request? ID Token or Access Token - AWS Cognito使用哪个 ID 来验证用户请求? ID 令牌或访问令牌 - AWS Cognito
【发布时间】:2020-01-21 06:16:38
【问题描述】:

我正在尝试实施单页应用程序,同时使用 AWS Cognito 作为 IdP。我打算让一个节点服务器连接到 MongoDB。基本上是平均堆栈。

我的应用结构

我在 App Client settings 中为 User Pool 选择了 Implicit Grant OAuth Flows 选项。

EmailOpenID 用于允许的 OAuth 范围。

主页(登录/注册) --> AWS Cognito 登录/注册 --> 回调 URL [包含 id_tokenaccess_tokenexpires_intoken_type] --> API 服务器

了解

使用文档中提到的解码技术,我想我应该能够验证 access_token 是否有效并且它属于我的用户池。

使用id_token,我想我应该能够检索到用户记录。

问题

如何限制带有有效令牌的 API 请求查看任何其他用户的详细信息?

试验

  • 以不期望 查询参数 的方式设计 API,并且仅使用为每个 API 请求发送的令牌来检索相应的用户记录。

需要澄清

  • 对于每个 API 请求,我是否必须将 id_tokenaccess_token 从我的 UI 发送到 API 服务器,还是单个令牌就足够了?应该是哪一个?

  • 我的 API 服务器是否必须为每个 API 调用连接到 AWS Cognito 以检查令牌在其末尾是否也有效,或者从 用户池获取 attributes > 使用那个令牌?

【问题讨论】:

标签: amazon-web-services amazon-cognito


【解决方案1】:

简答:ID 令牌。查看Using the ID Token 文档。

ID 令牌是 JSON Web 令牌 (JWT),其中包含有关已验证用户身份的声明 [...] 您可以在应用程序中使用此身份信息。 ID 令牌还可用于针对您的资源服务器或服务器应用程序对用户进行身份验证。

更长的答案:如果您想自己处理所有授权(即您的后端使用 ID 令牌来决定允许给定用户访问哪些资源),则可以使用 ID 令牌,但您也可以使用 @ 987654322@进行授权。即,将您现在拥有的用户池凭证转换为 AWS IAM 凭证。支持此操作的 IAM 角色可以是特定于用户的,using the current user's Cognito sub ID in the role policy

【讨论】:

    猜你喜欢
    • 2020-10-27
    • 1970-01-01
    • 2018-04-18
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    相关资源
    最近更新 更多