En mi sitio MVC3 evité establecer requestValidationMode = "2.0" con el nuevo atributo ValidateInput, pero ahora estoy intentando cambiar a WIF para la autenticación, y cuando el STS redirige De regreso a mi sitio, obtengo la excepción porque WSFederationAuthenticationModule.IsSignInResponse
llama al Request.Form
en lugar de Request.Unvalidated().Form
... ¿hay alguna manera de solucionar esto sin ir a requestValidationMode = "2.0" (que realmente no quiero hacer).Request.Form potencialmente peligroso en WSFederationAuthenticationModule.IsSignInResponse
Aquí está el seguimiento de la pila, para que pueda ver lo que quiero decir. El método de mi Controlador nunca se llama realmente.
[HttpRequestValidationException (0x80004005): A potentially dangerous Request.Form value was detected from the client (wresult="<trust:RequestSecuri...").]
System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection) +8755668
System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, RequestValidationSource requestCollection) +122
System.Web.HttpRequest.get_Form() +114
Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.IsSignInResponse(HttpRequest request) +21
Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.CanReadSignInResponse(HttpRequest request, Boolean onPage) +121
Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs args) +78
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +148
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
@Euginio: gracias por eso, esa información aparentemente se agregó en el [2 de agosto de 2010 publicación del libro "Guía de identidad de reclamaciones"] (http://claimsid.codeplex.com/releases/view/50000). ¿Será esto en documentos oficiales pronto? [MSDN] (http://www.google.com/search?q=%2BWIF+%2BRequestValidator+site%3Amsdn.microsoft.com+site-site%3Asocial.msdn.microsoft.com) y [TechNet] (http: // www.google.com/search?q=%2BWIF+%2BRequestValidator+site%3Atechnet.microsoft.com+site-site%3Asocial.technet.microsoft.com) no mencionar esto en absoluto. Una actualización de la página Problemas conocidos de WIF parece estar en orden, como mínimo. –
Parece una solución más limpia que la que se me ocurrió, que consistía en establecer la validación en 2.0 y utilizar un código similar para ese fragmento en Global.asax.cs Application_BeginRequest para llamar a Request.ValidateInput() en todos los casos excepto en el inicio de sesión de inicio de sesión . – Jaykul
Y funciona ;-) – Jaykul