jwt - OpenIdConnect:如何在令牌中添加额外的声明?
问题描述
我对 OpenIdConnect 很陌生,所以如果我仍然错过一些基本概念,请原谅。我正在为我的公司(AspNet Core + Aurelia)开发一个 SPA 风格的 Web 应用程序。我想通过 OpenIdConnect 使用 AzureAD 进行身份验证和授权,到目前为止一切正常,我能够获取令牌并登录。
问题是我的应用程序需要向客户端的浏览器提供一些特定于应用程序的声明,例如:可以读取 X,可以编辑 Y ...
如果我将这些声明添加到 AzureAD 提供的 JWT 令牌,显然它将变得无效,因为签名与内容不匹配。
如果我使用新声明生成一个新令牌,但使用应用程序密钥签名,显然它将是一个仅在我的应用程序上下文中有效的不同令牌(如果我稍后需要使用 AzureAD 令牌访问其他资源怎么办? ?,插入 AzureID 令牌作为新发行令牌的声明是个好主意吗?)
我在 OpenConnectId 中缺少什么吗?或者有没有办法在保持令牌有效的同时向 AzureAD 等第 3 方提供商颁发的令牌添加声明?也许是一种要求 AzureAd 向令牌添加声明并重新签名的方法?
解决方案
您可以尝试使用自定义声明映射策略。这在此处记录。
租户管理员使用此功能来自定义其租户中特定应用程序在令牌中发出的声明。
据我了解,这仍处于预览阶段。所以它可能需要一些试验和错误验证。
或者,您可以在应用程序本身中定义一些策略。鉴于您知道应用程序中的客户端 ID(因此您需要将它们用于 OpenID Connect 请求),您可以创建一个简单的策略来检查令牌并执行验证。
推荐阅读
- c - libxml2 的解析问题:命名空间错误
- reactjs - 配置nginx服务两个网站
- php - 为在 WooCommerce 中显示自定义产品价格的功能启用后缀
- google-cloud-platform - 在 App Engine 上部署 java 11 网络应用程序
- javascript - 是否使用 React JS - 从数据库加载图像的非交互式页面?
- python - pip.config 包含解析错误
- python-3.x - 错误:无法从“pdfminer.pdfparser”导入名称“PDFDocument”
- bixby - Bixby:本周末,下周末返回相同的值
- java - 使用 JDBC 处理可能的死锁的最佳方法
- php - 如何在 laravel 中发送电子邮件?