When integrating Windows Identity Foundation in your web applications probably one of the first errors you will see is the following:
In the description of the error is stated that you can solve the error by adding the following configuration to your web.config:
<httpRuntime requestValidationMode="2.0" />
This solves the issue indeed but reverts the validation mode back to the ASP.NET 2.0 version. A better solution is to create and register your own RequestValidator for WIF.
public class WIFRequestValidator : RequestValidator
{
protected override bool IsValidRequestString(HttpContext context, string value, RequestValidationSource requestValidationSource, string collectionKey, out int validationFailureIndex)
{
validationFailureIndex = 0;
if (requestValidationSource == RequestValidationSource.Form && collectionKey.Equals(WSFederationConstants.Parameters.Result, StringComparison.Ordinal))
{
SignInResponseMessage message = WSFederationMessage.CreateFromFormPost(context.Request) as SignInResponseMessage;
if (message != null)
{
return true;
}
}
return base.IsValidRequestString(context, value, requestValidationSource, collectionKey, out validationFailureIndex);
}
}You can then register the WIFRequestValidator in the web.config:
<httpRuntime requestValidationType="SampleApp.Security.WIFRequestValidator,SampleApp"/>