如何访问和使用委托的 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。需要委托令牌,因此客户端凭据将不起作用,这是我能找到的所有文档。
AuthenticationContextclass我们使用它获取令牌时,默认会将令牌存储在缓存中。
然后我们可以使用 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));
没有关于此的信息的原因可能是因为它应该是显而易见的,但我仍然在努力。
在 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。需要委托令牌,因此客户端凭据将不起作用,这是我能找到的所有文档。
AuthenticationContextclass我们使用它获取令牌时,默认会将令牌存储在缓存中。
然后我们可以使用 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));