Azure AD/Entra ID:如何在访问令牌中获取应用名称
解决Azure Entra ID客户端凭据流令牌中添加应用名称的问题
你用客户端凭据流实现后台应用认证的代码是没问题的,但要在令牌里拿到应用名称,得注意以下几点:
为什么之前的尝试无效
upn是用户主体名称,客户端凭据流是应用对应用的无用户认证场景,所以这个声明根本不会被包含在令牌里,加了也白加。- 直接加
name可选声明保存失败,是因为name是用户相关的声明,只适用于有用户上下文的认证流程(比如授权码流),客户端凭据流不支持这个声明,自然无法保存配置。
正确的配置方法:添加app_displayname可选声明
要在客户端凭据流的access token里拿到应用名称,需要添加专门的应用级可选声明app_displayname,步骤如下:
- 登录Azure门户,找到你的客户端应用注册
- 进入「令牌配置」页面
- 点击「添加可选声明」
- 声明类型选择「访问令牌」,然后在列表里找到
app_displayname并勾选,点击「添加」 - 保存配置后,重新获取令牌,就能在令牌的声明里看到
app_displayname字段,对应的值就是你的应用名称
替代方案:通过Graph API获取应用名称
如果不想修改令牌配置,也可以拿到令牌里的appid后,调用Microsoft Graph API获取应用的显示名称:
- 调用
GET /servicePrincipals/{appid}(需要Application.Read.All或Directory.Read.All权限) - 响应里的
displayName字段就是应用名称
你可以根据自己的场景选择合适的方式,优先推荐第一种直接在令牌里获取的方法,减少额外的API调用。
内容的提问来源于stack exchange,提问作者wertzui
相关产品推荐
相关产品推荐

