在JWT令牌中包含AAD组名称

时间:2020-01-23 07:38:59

标签: azure azure-active-directory microsoft-graph-api

是否可以选择在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进行其他调用,这是我想避免的。

1 个答案:

答案 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