Microsoft声称TenantId已删除,更改或不可用

时间:2019-02-01 10:22:33

标签: oauth azure-active-directory claims

我有一个网站,可以通过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)

1 个答案:

答案 0 :(得分:1)

我找到了解决方法。

与Claims无关,问题在于NaiveSessionCache,因为ADAL更新了一种方法,以便它启动一个新线程。.

在这里找到我的答案:HttpContext.Current is null on TokenCache.BeforeAccess