是否可以选择在AAD发行的JWT令牌中包含AAD组名(显示名称)而不是对象ID?如果可以,怎么办?
…
"family_name": "Smith",
"given_name": "John",
"groups": [
"0e1cbc5f-94bc-4c3b-a22b-a4c56bbdbd7d", // <- replace id with name
"9762d7ea-c0a9-4543-8a3e-2459e826a35a"
],
…
某些背景:我正在通过AAD为API实施OAuth。我配置了2个服务主体(1个用于API,1个用于客户端),并添加了委托和应用程序权限。我还配置了可选的组声明以接收组列表。一切似乎都可以正常工作,在两种情况下,我会获得带有组ID的JWT令牌:授权代码和客户端凭据。
在API实现中,我需要根据AAD组成员身份过滤数据。示例:我有一个AAD组“ Company1Users”,并想应用过滤器:“ where company = Company1”。 使用groupId时,我需要在我的应用程序(AADGroupId = Company1)中维护其他映射,或者对图形API进行其他调用,这是我想避免的。
答案 0 :(得分:0)
在JWT令牌中包含AAD组名
简而言之,您无法使用令牌获得它们。
您注意到,您仅获得ID。通常这很好,因为id不能更改,而id可以更改。
此外,可能会发出包含域限定sAMAccountName
而不是组的Azure Active Directory objectID
的组和角色声明。但是,sAMAccountName
仅在从Active Directory同步的组对象上可用。它们不适用于在Azure Active Directory或Office365中创建的组。
如果要基于组进行授权,则可以在配置文件中设置ID,然后检查ID。如果您想为其他目的使用名称,则需要从Microsoft Graph API查询组。您可以找到API文档here。