如果我使用“https://management.core.windows.net”作为资源ID创建令牌,那么我将无法对图API使用相同的accessToken。有没有办法避免多次调用AcquireTokenAsync?
AuthenticationResult result = authContext.AcquireTokenAsync("https://management.core.windows.net", "<some_client_id>, new Uri("https://localhost"), new PlatformParameters(PromptBehavior.Always)).Result;
TaskCompletionSource<string> tcs = new TaskCompletionSource<string>();
tcs.SetResult(result.AccessToken);
ActiveDirectoryClient graphClient = new ActiveDirectoryClient(new Uri("https://graph.windows.net/" + result.TenantId),
() => { return tcs.Task; });
foreach (var app in graphClient.Applications.ExecuteAsync().Result.CurrentPage)
{
Console.WriteLine($"{app.AppId}, {app.DisplayName}");
}
答案 0 :(得分:2)
Azure AD访问令牌仅适用于单个资源,因此简短答案为否。
但是,您确实从Azure AD发出multi-resource refresh tokens这一事实中受益,这意味着获取第二个资源的访问令牌只是对AAD令牌端点的调用,而不是对完整身份验证流的调用。 / p>