authentication - AWS Cognito 如何验证我自己的 IdP 颁发的身份令牌?
问题描述
我有一个由移动应用程序和后端(Django)组成的系统,当前的身份验证工作流程:
- 移动应用使用我的身份验证服务登录并接收 JWT
- 移动应用程序随每个请求将 JWT 发送到 REST API
现在我想允许移动应用程序直接访问 aws 资源(s3..etc),而不是通过后端,所以所需的工作流程是:
但是,我不想使用亚马逊作为 idP(如上图),而是想创建自己的 idP,我的问题是:
- 当前身份验证工作流中的 JWT 令牌是成为openid 连接 授权代码工作流的身份令牌还是访问令牌?
- Cognito 如何验证身份令牌是从配置的同一 idP 发出的(步骤 3)?
- 或者我应该将普通用户身份验证(当前身份验证 wokflow)与 aws 凭据身份验证工作流程分开?如何?
解决方案
关于 cognito 如何验证 id 令牌的部分答案,取自此处:
- iss 参数必须与登录映射中使用的键匹配(例如 login.provider.com)。
- 签名必须有效。签名必须可以通过 RSA 公钥进行验证。
- 托管公钥的证书指纹与您的 OpenId Connect Provider 上的配置相匹配。
- 如果存在 azp 参数,请根据您的 OpenId Connect 提供程序中列出的客户端 ID 检查此值。
- 如果 azp 参数不存在,请根据您的 OpenId Connect 提供程序中列出的客户端 ID 检查 aud 参数
推荐阅读
- docker - 从 jupyter docker stack 在 docker 中安装 %%R cell magic
- jsonix - 在 jsonix 上运行 maven 测试时出错 - 如何调试?
- git - First GitHub pull request for typo fix - do I need to branch locally?
- c++ - How to create a constructor which takes in a char array?
- swift - Passing the property of text of a Label from the FirstVC to the SecondVC returns nil
- go - 如何使用 request.Context 而不是 CloseNotifier?
- ruby-on-rails - 轨道迁移显然导致无限分叉
- java - 在 java 服务器端处理 CORS
- javascript - replace repeating html-tags in javascript
- r - “强制引入的 NA”,转换为数字的因子