我有 .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;
但是这个令牌没有用户角色的详细信息。
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