我在最近4个小时内一直在努力解决这四行代码中出现的问题:
string userObjectID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
var authContext = new Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext(Startup.authority, new NaiveSessionCache(userObjectID));
var credential = new Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential(Startup.clientId, "SECRET_VALUE");
var result = await authContext.AcquireTokenSilentAsync("https://MyDomain.onmicrosoft.com/TaskWebAPI", credential, new UserIdentifier(userObjectID, UserIdentifierType.UniqueId));
如果你们中的任何人帮我调试这四行,那将是一个很好的帮助。
答案 0 :(得分:0)
AcquireTokenSilentAsync(...)
尝试在不显示任何UI的情况下为您提供令牌,如果无法显示,则会失败。它通过在令牌缓存中查找有效令牌来执行此操作,并在必要时刷新令牌。这里的操作是捕获AdalException并使用acquireToken调用重试。
catch (AdalException e) {
if (e.ErrorCode == "failed_to_acquire_token_silently") {
// Do an AcquireToken call
}
}
Here's AcquireToken的所有不同重载。