身份验证后,为外部用户和 Microsoft 内部用户获取 JWT 令牌中的应用程序角色

问题描述 投票:0回答:1

我们正在尝试为我们的多租户应用程序实现基于角色的身份验证,该应用程序也允许家庭租户用户和外部租户用户。

应用程序托管在 Azure 平台的一个租户上。我们为主租户用户提供了 2 个角色。这两个角色是“Admin.Only”和“User.Only”。对于外部用户,我们将角色分配为“External.Only”。

我们的前端应用程序是在 Angular 中,后端 API 是在 .Net core 中。

我们正在使用 MSAL 库进行应用程序身份验证。

目前我们已将一个角色分配给主租户用户电子邮件 ID,并将另一个角色分配给外部用户。我们已邀请外部用户(添加为访客用户),外部用户也接受了邀请。

现在,如果我们使用主租户电子邮件 ID 登录,我们将获得 JWT 令牌的角色。但我们没有为外部用户获得 JWT 的角色。

我们已直接从企业应用程序页面将角色分配给用户。我还创建了一个 Azure 组并添加了外部用户(来宾用户)。但智威汤逊的角色还没有出现。我什至也尝试过使用安全组,但 JWT 中没有显示角色。

任何人都可以在这里帮助在外部用户登录时获取 JWT 中的角色吗?这样我们就可以在 .Net Core API 控制器级别验证 JWT 令牌,以授权其角色并相应地提供 API 响应。

microsoft-graph-api azure-ad-msal user-roles msal.js azure-authentication
1个回答
0
投票

我创建了一个 Azure AD 安全组并添加了来宾用户,如下所示:

enter image description here

在企业应用程序中添加了组用户和组:

enter image description here

通过 Postman 为外部用户生成

访问令牌

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token client_id:ClientID scope:api://xxx/.default grant_type:authorization_code code:code redirect_uri:https://jwt.ms client_secret:ClientSecret

enter image description here

当我解码令牌时,外部用户存在

应用程序角色

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.