【问题标题】:AWS Cognito hosted UI returning id_token in URLAWS Cognito 托管 UI 在 URL 中返回 id_token
【发布时间】:2020-03-19 04:03:16
【问题描述】:

我正在使用 AWS Cognito 的托管 UI 进行用户登录。 id 令牌作为 URL 的一部分返回,如https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-integration.html 中所述。即,

您可以在响应中的 #idtoken= 参数之后找到 JSON Web 令牌 (JWT) 身份令牌。这是来自隐式授权请求的示例响应。 https://www.example.com/#id_token=123456789tokens123456789&expires_in=3600&token_type=Bearer

但是,将敏感数据放在查询字符串中被认为是一种不好的做法 (Is an HTTPS query string secure?)。 AWS Cognito 是否支持更安全的返回 id 令牌的方式?

【问题讨论】:

  • 我意识到 id 令牌不在查询字符串中。作为 URL 片段,它不会发送到服务器。处理此 URL 的服务器页面可以使用 Javascript 解析并保存在浏览器中的 id 令牌。

标签: query-string amazon-cognito


【解决方案1】:

您可以要求 cognito 向您发送授权码,而不是令牌。 来自文档:

授权码授予是授权最终用户的首选方法。不是在认证时直接向最终用户提供用户池令牌,而是提供了授权代码。然后将此代码发送到自定义应用程序,该应用程序可以将其交换为所需的令牌。由于令牌从不直接暴露给最终用户,因此它们被泄露的可能性较小。

来源:https://aws.amazon.com/blogs/mobile/understanding-amazon-cognito-user-pool-oauth-2-0-grants/

【讨论】:

  • 感谢分享博文!它比 Cognito 开发人员指南提供更多信息。 authorization code grant 需要编写服务器端代码。我希望的理想解决方案是 1) 没有服务器端代码,2) 例如,id_token 从查询字符串参数移动到标头。
猜你喜欢
  • 2020-09-18
  • 1970-01-01
  • 2018-02-06
  • 2020-05-25
  • 2022-11-11
  • 2021-04-20
  • 2019-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多