gpt4 book ai didi

asp.net-core - Azure AAD 应用注册 : optional claims absent from JWT

转载 作者:行者123 更新时间:2023-12-04 08:15:06 24 4
gpt4 key购买 nike

无法让可选声明出现在 JWT ID token 中 对于我正在创建的 asp.net 核心 API 应用程序。为了进行测试,我使用 POSTMAN 通过其内置的 Oauth2 机制获取 Bearer token 。具体来说,我想要 userprofile属于 MS Graph 的范围,以便我可以访问用户的已验证电子邮件地址以及他们的名字和姓氏。
我似乎遇到了与 this question 相同的问题- 第一部分,OP 根本无法显示声明(例如,在调试或通过 jwt.ms 检查 token 时),以及 this one .在我的场景中,我只开发了一个没有 UI 组件的 Web API。期望是在用户上下文中发出请求,以便 API 可以根据用户声明执行授权。
除了连接 asp.net 核心 API 之外,我还做了以下工作:
配置

  • 注册了 API 应用程序 (以下所有在 Azure 门户中完成)
  • Multi-Tenancy
  • 添加了所需的 MS Graph API 权限
  • 为我的应用程序创建了一个自定义范围
  • 在 token 配置中添加了所需的可选范围
  • 设置 accessTokenAcceptedVersion2在 list

  • 注册了客户端应用 (同样,在 Azure 门户中,在同一租户中)
  • 添加了平台 SPA(尚未使用,但这将是访问 API 的主要用例)和 native 桌面(供 POSTMAN 使用)
  • 在 API 权限中,添加了我的 API 应用范围(如上)和 MS Graph 权限


  • 使用 POSTMAN 进行测试
  • 使用 POSTMAN 的 Oauth2 设置对我本地运行的 API 的请求授权类型Authorization Code (With PKCE)的授权方法并使用相关 URL 进行身份验证和 token 、客户端应用注册的客户端 ID,并将范围设置为我的 API 的自定义范围。
  • 一切都在 Authentication 下工作(我的 API 配置正确,与 API 应用注册相关联,并且 JWT 正确地通过 API 中的我的上下文)。当 POSTMAN 使用浏览器获取身份验证时,同意提示会显示预期的权限。
  • 但是,JWT 中不存在可选声明!

  • 我还尝试了什么
  • 添加 openid email profile到要求的范围(没有区别)
  • 尝试将范围添加到 客户注册 (但这有点绝望,我知道决定 claim 的是资源,而不是客户)
  • 广泛阅读:
  • Optional claims doco
  • ID tokens doco
  • Identity platform permissions/consent doco
  • SPA (and other platforms) auth scenario doco


  • 我希望在我从 POSTMAN 获得的 Bearer token 中看到额外的声明,所以即使没有运行我自己的 API,我也可以看到它们不存在。所以我怀疑我错过了一个配置步骤,而不是我的代码中有错误。
    我很清楚我在这里错过和/或误解了一些东西,我被困住了。

    最佳答案

    正如评论中所讨论的,您需要在 API 的访问 token 上配置可选声明,而不是 ID token 。由于您在 Postman 中获得了访问 token 。

    关于asp.net-core - Azure AAD 应用注册 : optional claims absent from JWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65746450/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com