我跟着this article设置了一个带有ADFS的Azure Web应用程序(使用OWIN而不是WIF),将其添加到现有的MVC3 Web应用程序中。身份验证在本地正常工作,但在部署到Azure Web App后,我得到间歇性的MSIS7042 UpdateLoopDetectionCookie错误(仅访问根站点时,而不是[授权]标记的代码)。依赖方信任没有配置其他证书。本地/天蓝色的RPT配置有完全相同的声明。
之前我曾使用过ADFS(WIF)和Azure云服务,并且必须使用自定义RSA SecurityTokenHandler来保持cookie /令牌加密在会话中保持一致(X509 Cert签名而不是Machine Key)。 MS文章没有提到需要这个,但在获得前几个STS身份验证循环后,我认为这可能是问题所在。我使用自定义X509DataProtectionProvider在OWIN中实现了这一点。
public void ConfigureAuth(IAppBuilder app)
{
app.SetDataProtectionProvider(new X509DataProtectionProvider("AppName") );
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
ExpireTimeSpan = System.TimeSpan.FromMinutes(480)
});
app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
Wtrealm = realm,
MetadataAddress = metadata,
Notifications = new WsFederationAuthenticationNotifications
{
AuthenticationFailed = context =>
{
context.HandleResponse();
context.Response.Redirect("Error?message=" + context.Exception.Message);
return Task.FromResult(0);
}
}
});
}
无论我尝试什么,我都会从ADFS获得循环检测异常。此时我可能会回到WIF。只是不想让这个问题悬而未决。任何建议将不胜感激!
Microsoft.IdentityServer.Web.InvalidRequestException: MSIS7042: The same client browser session has made '6' requests in the last '5' seconds. Contact your administrator for details.
at Microsoft.IdentityServer.Web.FederationPassiveAuthentication.UpdateLoopDetectionCookie()
at Microsoft.IdentityServer.Web.FederationPassiveAuthentication.SendSignInResponse(MSISSignInResponse response)