在ASP .NET MVC应用程序中,如果基于声明的ADFS 2.0出现“重定向太多”错误,可能是由于配置问题或代码错误导致的。以下是一些可能的解决方法:
Application_Start
方法中正确配置身份验证和授权:protected void Application_Start()
{
// ...
FederatedAuthentication.FederationConfigurationCreated += OnFederationConfigurationCreated;
}
private void OnFederationConfigurationCreated(object sender, FederationConfigurationCreatedEventArgs e)
{
var federationConfiguration = e.FederationConfiguration;
federationConfiguration.IdentityConfiguration.AudienceRestriction.AllowedAudienceUris.Add(new Uri("https://yourapplication.com"));
federationConfiguration.WsFederationConfiguration.Realm = "https://yourapplication.com";
federationConfiguration.WsFederationConfiguration.HomeRealm = "https://youradfs.com/adfs/services/trust";
// ...
}
public ActionResult Login()
{
var requestMessage = new SignInRequestMessage(new Uri("https://youradfs.com/adfs/ls"));
requestMessage.Reply = "https://yourapplication.com/Account/SignInCallback";
return Redirect(requestMessage.WriteQueryString());
}
public ActionResult SignInCallback()
{
var responseMessage = WSFederationMessage.CreateFromUri(Request.Url) as SignInResponseMessage;
if (responseMessage != null && responseMessage.IsSignInResponse)
{
// 处理登录响应
}
return RedirectToAction("Index", "Home");
}
如果以上步骤都正确配置,并且仍然出现“重定向太多”错误,请检查应用程序的其他部分是否有重复的重定向逻辑或错误的授权设置。