Angular - MSAL 用户缺少角色

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

我在 entra id 中有一个后端应用程序,它具有不同的角色 - 例如 Role1 和 Role2。我还有一个前端应用程序,它具有后端 API 权限。

API:

应用程序:

当我在前端使用身份验证时,登录用户的角色不会从后端应用程序下载。这对我来说是一个问题,因为我不想在两个地方拥有角色,而且我不能,因为我在后端使用 id 角色。

export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration {
    const protectedResourceMap = new Map<string, Array<string>>();
    protectedResourceMap.set(environment.graphUrl + '/me/memberOf', ['user.read']);
    protectedResourceMap.set('user.read', [environment.scope]);
    return {
        interactionType: InteractionType.Redirect,
        protectedResourceMap,
    };
}

这有可能吗?谢谢你

编辑: 第一个令牌不会从 Api 应用程序返回任何角色。 (也许需要包括范围,但我不知道如何)

第一个代币:

第二个令牌用于调用后端,并且为 Api 应用程序添加了范围。

angular microsoft-entra-id msal azure-entra-id
1个回答
0
投票

我创建了一个 Microsoft Entra 应用程序 (

API
) 并公开了添加授权客户端应用程序的 API:

enter image description here

并创建了应用程序角色:

enter image description here

在前端应用程序(

APP
)中,为
API
应用程序授予API权限:

enter image description here

要获取令牌中的角色,请确保在

API
企业应用程序中将角色分配给用户:

enter image description here

对于样本,我通过邮递员生成了访问令牌

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

client_id:APPClientID
grant_type:authorization_code
scope:api://APIClientID/.default 
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.