如何访问和使用委托的 Adal 令牌

How to access and use Delegated Adal token

没有关于此的信息的原因可能是因为它应该是显而易见的,但我仍然在努力。

StartUp.Auth.cs 中使用 ADAL 登录到我的 AAD 租户后,我成功获得令牌:

private async Task OnAuthorizationCodeReceivedAAD(AuthorizationCodeReceivedNotification notification)
        {
            var code = notification.Code;

            var credential = new ClientCredential(appId, appSecret);
            var userObjectId = notification.AuthenticationTicket.Identity.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
            var context = new Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext("https://login.microsoftonline.com/tenant.onmicrosoft.com/");

            var uri = new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path));

            var result = await context.AcquireTokenByAuthorizationCodeAsync(code, uri, credential);
        }

我可以在这里添加一个断点并查看令牌。我的问题是,我现在如何通过其他 类 的代码访问此令牌?例如调用 API。需要委托令牌,因此客户端凭据将不起作用,这是我能找到的所有文档。

A​​uthenticationContextclass我们使用它获取令牌时,默认会将令牌存储在缓存中。

然后我们可以使用 AcquireTokenSilentAsync 根据资源和用户从缓存中检索令牌。此方法将从缓存中获取令牌并在必要时更新令牌。这里有一个例子供您参考:

AuthenticationContext authContext = new AuthenticationContext(authority);
ClientCredential credential = new ClientCredential(clientId, secret);
string userObjectID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
AuthenticationResult result = await authContext.AcquireTokenSilentAsync(resource,credential, new UserIdentifier(userObjectID, UserIdentifierType.UniqueId));