【问题标题】:How to get user's group name from azure active directory in angular?如何从角度的天蓝色活动目录中获取用户的组名?
【发布时间】:2023-03-23 22:07:01
【问题描述】:

使用 ng2-adal 连接到 azure 目录(https://github.com/mazhisai/ng2-adal-QuickStart)。我已经成功登录,收到了类似这样的group id --> "groups":["4ba2649e-20d2-40f4-a406-2ed897686403","43e19f05-c077-4716-b001-0ffb0d75fff8"].

如何使用 ng2-adal 从上述令牌中获取组名(首选,因为我已经使用它完成了所有操作)

【问题讨论】:

    标签: javascript .net angular azure azure-active-directory


    【解决方案1】:

    我已成功登录并收到类似于此的组 ID --> "groups":["4ba2649e-20d2-40f4-a406-2ed897686403","43e19f05-c077-4716-b001-0ffb0d75fff8"]。

    对于您的 Angular 应用程序,您使用的是 implicit flow。 AFAIK,groups 声明在 id_token 下,因为您可以看到 groups 声明,我假设当前登录用户所属的组数不超过当前 6 个或更多组。详情可以关注Claims in id_tokens

    如何使用 ng2-adal 从上述令牌中获取组名(首选,因为我已经使用它完成了所有操作)

    groups 声明仅列出了用户所属的有限数量的组。要获取组名,需要显式调用相关的REST API(AD Graph > Get a groupMicrosft Graph > Get group)。

    要检索 access_token,您需要调用:

    this.adalService.acquireToken(resource: string)
    

    注意:对于AD Graph API,您需要传递https://graph.windows.net,而对于Microsoft Graph API,您需要传递https://graph.microsoft.com

    我更喜欢使用 Microsoft Graph,请求如下所示:

    GET https://graph.microsoft.com/v1.0/groups/{id}?$select=displayName
    Header: Authorization:Bearer {access_token}
    

    注意:如果groups 声明不存在而有hasgroups 声明,我假设当前登录用户的组数超出限制,您可能需要调用 Graph API 获取当前登录用户所属的群组。

    【讨论】:

    • 感谢您的信息。我认为最新的 ng2-adal 似乎有一个错误。现在我正在使用另一个运行良好的 adal 模块。
    • 是否有一个 API 可以列出属于某个用户的所有组以及该组的名称?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 2015-12-20
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多