【问题标题】:Get azure ad user group by @azure/msal-angular library in angular 8通过 Angular 8 中的 @azure/msal-angular 库获取 azure 广告用户组
【发布时间】:2020-02-19 06:45:02
【问题描述】:

我正在使用@azure/msal-angular。使用 loginRedirect() 重定向到微软登录页面,我得到了带有 access_token 和组 ID 的响应。但是我需要组详细信息来在我的应用程序中实现访问控制。获取组详细信息是否需要任何额外的配置设置。

我的配置:

MsalModule.forRoot({
  clientID: <clientId>,
  authority: `https://login.microsoftonline.com/<tenantId>`,
  redirectUri: "http://localhost:4200/",
  cacheLocation: "localStorage",
  popUp: !isIE,
  consentScopes: ["user.read", "api://<clientID>/GFS_EClaims_UI"],
  storeAuthStateInCookie: false,
  postLogoutRedirectUri: "http://localhost:4200/",
  protectedResourceMap: protectedResourceMap
})

或者要获取组详细信息,我是否需要在 loginRedirect() 之后调用 Microsoft graph api?

提前致谢!

【问题讨论】:

    标签: angular azure azure-ad-graph-api msal


    【解决方案1】:

    您无法从令牌中获取组详细信息。您只能在声明中获取如下组 ID:

    {
      "groups": ["1ce9c55a-9826-4e32-871c-a8488144bb32"]
    }
    

    有关访问令牌中支持的声明,请参阅https://docs.microsoft.com/en-us/azure/active-directory/develop/access-tokens#claims-in-access-tokens

    但要控制您的应用程序的访问权限,我认为您不需要组详细信息。您可以只使用组 ID 来决定用户是否有权访问该资源。

    更好的方法是结合组和角色。您可以定义一些应用角色并将角色分配给组。然后该组中的用户将拥有如下声明:

    {
      "roles": ["admin"]
    }
    

    然后您可以根据用户的角色实现您的授权逻辑。

    详情请参阅https://joonasw.net/view/using-groups-vs-using-app-roles-in-azure-ad-appshttps://docs.microsoft.com/en-us/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps

    【讨论】:

    • 感谢@tom-luo 的回复。您的意思是说作为自定义角色添加到活动目录中的角色可以分配给用户,因此这些分配的角色我将在身份验证成功响应中作为令牌中的声明获得。如果我错了,请您纠正我。抱歉,我是 Azure AD 身份验证的新手。
    • @saikumar 没错。有关如何创建应用角色,请参阅最后一个链接。
    猜你喜欢
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 2021-02-15
    • 2021-03-08
    • 2022-01-13
    • 2022-07-20
    相关资源
    最近更新 更多