我正在尝试使用 OWIN 在我的 Asp.Net MVC 应用程序中集成 WS-Federation。我遵循了 github 示例,它按预期工作。
现在我想更进一步,从我的网站调用托管在不同 Azure Web 应用程序上的外部 WebApi。对于这种情况,我找不到任何 WS-Fed 示例。WebApi 需要一个访问令牌来提供对受保护资源的访问。在我的一个 MVC 控制器中,我尝试使用 ADAL.Net 代码获取访问令牌,但出现超时错误。
string userObjectID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
var authContext1 = new Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext(authority, new NaiveSessionCache(userObjectID));
var credential = new Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential(clientId, appKey);
var tokenResult = await authContext1.AcquireTokenAsync(todoListResourceId, credential);
我从 github 上的一个 azure示例中复制了 NaiveSessionCache 。然后我使用 HttpClient 将此 tokenResult.AccessToken 传递给 webApi 调用。这给了我 500 服务器超时错误。
但是,如果我不在 authContext1 中使用 NaiveSessionCache 并在其构造函数中将其替换为 false(无缓存),则代码可以正常工作。
我在这里想念什么?谢谢!