Azure Active Directory 令牌在 JWT 中缺少应用角色
Posted
技术标签:
【中文标题】Azure Active Directory 令牌在 JWT 中缺少应用角色【英文标题】:Azure Active Directory tokens missing App Roles in JWT 【发布时间】:2020-01-03 05:46:50 【问题描述】:我在我的 Active Directory 应用程序注册中注册了两个应用程序,一个客户端和一个 API。通过“公开 API”刀片,客户端应用程序已被 API 应用程序信任。我还向 API 应用程序添加了 4 个应用程序角色(清单中的 IE allowedMemberTypes: ["Application"]
),并将它们作为权限添加到客户端应用程序。
当我通过客户端凭据流获取客户端应用程序的 appid 的访问令牌并通过 jwt.io 解码令牌以查看声明时,我可以很好地看到我分配给客户端应用程序的角色,所有这些都在一个漂亮整洁的数组。
但是,使用身份验证流程,并以我自己(属于目录)身份登录,使用相同的机密、范围、客户端 ID 等,应用程序角色在随该流程发回的令牌中丢失,它既不在 id 令牌中,也不在 auth 令牌中。
我在这里缺少什么?是我忘记了一个步骤,还是授权流程不支持应用会员审批?
【问题讨论】:
应用角色只适用于应用......你可以允许用户这样做:allowedMemberTypes: ["Application", "User"]
。
尝试在allowedMemberTypes
中添加User
,如上面的评论所说,然后将您的用户帐户分配给应用角色,在门户中导航到 Azure AD 中的企业应用程序 -> 查找应用对应的服务主体 -> 用户和组 -> 将您的用户帐户添加到您想要的应用角色。
【参考方案1】:
正如official documentation所说:
您可以将应用角色定义为目标用户和/或应用。什么时候 对应用程序可用,应用程序角色显示为应用程序权限 在“必需的权限”边栏选项卡中。
而且,一旦您在应用中添加了应用角色(在 allowedMemberTypes 中添加了“用户”),您就可以在企业应用中assign users and groups to these roles。
如果为一个用户分配了任何角色,您可以在他的 id 令牌中获取角色信息。
【讨论】:
但是有没有办法添加应用角色来访问令牌?以上是关于Azure Active Directory 令牌在 JWT 中缺少应用角色的主要内容,如果未能解决你的问题,请参考以下文章
保护 Azure Active Directory B2C 访问令牌和刷新令牌
Azure Active Directory,允许的令牌受众似乎没有做任何事情
Azure Active Directory RBAC 不返回承载令牌中的角色
使用 Azure Active Directory 客户端凭据流控制身份验证令牌的到期