我有一个网站,可以通过OAuth和AzureAD登录。 我这样获取我的OAuth AuthenticationToken:
Claim tenantClaim = ClaimsPrincipal.Current.FindFirst(TenantIdClaimType);
if (tenantClaim != null)
{
string tenantId = tenantClaim.Value;
string userObjectID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
AuthenticationContext authContext = new AuthenticationContext(Startup.Authority, new NaiveSessionCache(userObjectID));
ClientCredential credential = new ClientCredential(clientId, appKey);
AuthenticationResult authenticationResult = await authContext.AcquireTokenSilentAsync(dynamicsUrl, credential, new UserIdentifier(userObjectID, UserIdentifierType.UniqueId));
return authenticationResult.CreateAuthorizationHeader();
}
它一直都运行良好。我失去了大约3个月的网站跟踪记录,并且该网站无法正常运行了。我调试了代码,并尝试“手动”执行。进入http://schemas.microsoft.com/identity/claims/tenantid,然后看到以下消息:
您正在寻找的资源已被删除,其名称 更改,或暂时不可用。
它是被删除,重命名还是其他?我检查了AzureAD,一切仍然有效(未过期),我什至创建了一个新的appKey并尝试了它,但仍然无法正常工作。
对我的英语不好对不起,我希望你们能理解我的要求以及我在说什么。如果您需要更多信息,请告诉我。
感谢您抽出宝贵的时间,感谢您的帮助。
最好的问候, 尼科又名迈里德(Myridor)
答案 0 :(得分:1)
我找到了解决方法。
与Claims无关,问题在于NaiveSessionCache,因为ADAL更新了一种方法,以便它启动一个新线程。.
在这里找到我的答案:HttpContext.Current is null on TokenCache.BeforeAccess