You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Microsoft Entra中向openid-configuration的claims_supported添加自定义声明?

如何将自定义声明添加到Microsoft Entra的openid-configuration的claims_supported中?

问题背景

调用https://login.microsoftonline.com/{myAppId}/v2.0/.well-known/openid-configuration接口时,返回的claims_supported字段仅包含平台预定义的声明:

"claims_supported": [
    "sub",
    "iss",
    "cloud_instance_name",
    "cloud_instance_host_name",
    "cloud_graph_host_name",
    "msgraph_host",
    "aud",
    "exp",
    "iat",
    "auth_time",
    "acr",
    "nonce",
    "preferred_username",
    "name",
    "tid",
    "ver",
    "at_hash",
    "c_hash",
    "email"
],

我方消费系统仅允许使用该列表中的声明作为用户名,但需要使用的自定义声明employeeId不在其中,无法直接使用。


解决方案说明

首先明确:Microsoft Entra的openid-configuration中claims_supported字段是平台预定义的,无法直接手动修改。它仅包含OIDC标准声明和Entra默认支持的核心声明。但可以通过以下方式满足需求:

  • 映射自定义声明到现有支持的字段(限场景)
    如果employeeId已存在于用户的Entra属性中,可在应用注册的「令牌配置」里设置可选声明,将employeeId映射到claims_supported中已有的字段(如preferred_username)。注意此方式需确保业务上不会和原字段用途冲突。

  • 配置自定义声明并调整消费系统逻辑
    你可以在Entra应用注册的「令牌配置」中添加自定义声明,让ID令牌/访问令牌直接携带employeeId。之后修改消费系统的验证逻辑:先完成令牌合法性校验,再直接提取employeeId作为用户名,无需严格依赖claims_supported列表。

  • 通过Graph API补充获取自定义声明
    如果消费系统允许额外API调用,可在获取令牌后,调用Microsoft Graph API查询用户的employeeId属性,再用于用户名验证。此方式无需修改claims_supported,通过补充数据实现需求。


内容的提问来源于stack exchange,提问作者Keith Banner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 09:51:05