gpt4 book ai didi

Azure AD OpenID 连接 - token 中未显示组

转载 作者:行者123 更新时间:2023-12-02 06:19:57 24 4
gpt4 key购买 nike

我们希望将 Angular 前端应用程序连接到 Azure AD。我们开始使用以下示例项目对此进行测试:https://blogs.msdn.microsoft.com/premier_developer/2018/10/24/using-adal-js-with-angular4/#

在“app.module.ts”中,我们提供了如下所示的 Azure AD 配置。

{
provide: APP_CONFIG, useValue: {
clientId: '<our-client-id>',
tenantId: '<our-app-id>',
redirectUri: 'http://localhost:4200/frameredirect',
}
}

在 Azure 门户中,我们创建了应用程序注册并配置了重定向 URL 以匹配上述内容。根据https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens中提到的信息我们还应该在 Azure 门户中配置应用程序 list ,以便用户组将包含在 token 中。因此,在 Minifest 中,我们将 groupMembershipClaims 设置为 SecurityGroup。现在所有组织组都应包含在 token 中。如果有很多角色,那么我们应该看到一个可以查询组的端点。像这样的东西:

"src1" : { "endpoint" : 
"https://graph.windows.net/{tenantID}/users/{userID}/getMemberObjects" }

设置完成后,即可登录。但是,用户组根本不包含在访问 token 中。有谁知道我们缺少什么吗?

最佳答案

正如您在评论中提到的,登录用户是 6 个以上组的成员。在这种情况下,您不会返回包含所有组 ID 的 groups 声明,而是 Azure AD 返回一个超额指示器,这是一个提示,让您知道该用户是多个组的成员。 Microsoft Docs

hasgroups 声明

如果 SPA 使用 OAuth 2.0 隐式授权流程,则使用的超额指示器是 hasgroups 声明。其背后的原因是为了确保 URI 片段不会超出 URL 长度限制。因此,如果用户属于最多 5 个组,则长度不是问题,您将获得实际的组 ID。如果有 6 个或更多,您需要使用图 API 进行单独的调用来获取组。

enter image description here

组:src1 声明

groups:src1 声明也是一个超额指示器,但是这个声明提供了有关调用哪个端点来获取组的更多信息。我见过这种说法是在 URL 长度相关限制不适用时出现的,例如例如,如果您使用的是带有 ADAL.NET 库的基于 .NET 的控制台应用程序,而不是基于 Angular 的 SPA。同样,目的是相同的,让您知道用户是许多组的一部分,您需要进行单独的调用来获取该信息。

enter image description here

如何获取用户的群组相关信息?

  1. 正如 hasgroups 声明本身提到的,您可以调用 Azure AD Graph API

    https://graph.windows.net/{tenantID}/users/{userID}/getMemberObjects
  2. 您还可以使用较新的 Microsoft Graph API。这是较新的推荐之一。您可以在此处阅读有关与 Azure AD Graph API 的比较以及何时使用哪个 API 的信息 Microsoft Graph or Azure AD Graph

    我发现稳定版本 v1.0 至少有两个 API 可能对您有帮助:

    List memberOf

    GET /users/{id | userPrincipalName}/memberOf

    user:getMemberGroups

    POST /users/{id | userPrincipalName}/getMemberGroups

    此 API 的检查是可传递的,与读取 memberOf 导航属性不同,后者仅返回用户是其直接成员的组。它支持 Office 365 和 Azure AD 中配置的其他类型的组。每个请求可以返回的最大组数为2046

关于Azure AD OpenID 连接 - token 中未显示组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53522103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com