如何使用登录用户和角色创建 MSAL 访问令牌,包括 AAD 范围?

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

我有 .net 核心应用程序。

我正在尝试通过 MSAL 方法登录。登录完成后,我需要生成用于访问 Azure API 的访问令牌。我能够生成访问令牌。但是令牌不包含用户和角色详细信息。

我有这样的主张

var claim = user.Claims.ToList();

我正在使用

ConfidentialClientBuilder()
生成访问令牌,如下所示

var app = ConfidentialCLientBuilder.Creat(ClientID)
.WithClientSecret(xxxxx)
.WithAuthority(xxxxxx).build();

然后为了生成令牌,我遵循以下内容

var result = await app.AccquireTokenForClient(scope).ExecuteAsync();

token = result.AccessToken;

但是这个令牌没有用户角色的详细信息。

asp.net-core azure-active-directory msal
1个回答
0
投票

ID token的获取,我们可以使用本文档下面提到的代码来获取,但是就像你看到的,id token基本上是在用户登录时生成的,我们需要授权码来做.

var app = ConfidentialClientApplicationBuilder.Create("client_id")
        .WithClientSecret("client_secret").Build();
var result = await app.AcquireTokenByAuthorizationCode(
            new[] { "openid", "profile", "offline_access" },
            "{authorization_code}").ExecuteAsync();
var idtoken = result.IdToken;

因此,我更喜欢使用access token来调用graph api来获取用户角色。或者使用扩展查询参数:

https://graph.microsoft.com/v1.0/users/user_id?$expand=appRoleAssignments

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