Compartir a través de


Problemas conocidos

En este tema se tratan los problemas conocidos de Windows® Identity Foundation (WIF) junto con las soluciones alternativas existentes.

ASP.NET detecta los tokens de federación pasivos como un posible ataque a la seguridad

Síntoma

Se produce un error en los escenarios de federación pasivos con el siguiente mensaje de error en la aplicación de usuario de confianza.

Se detectó un posible valor Request.Form peligroso en el cliente…

Descripción: La validación de solicitudes ha detectado un valor de entrada del cliente potencialmente peligroso, y se ha anulado el procesamiento de la solicitud. Este valor puede indicar un intento de comprometer la seguridad de la aplicación, como un ataque XSS. Puede deshabilitar la validación de solicitudes estableciendo validateRequest=false en la directiva Page o en la sección de configuración. Sin embargo, es absolutamente recomendable que la aplicación compruebe explícitamente todas las entradas en este caso.

Causa

Durante los escenarios de federación pasivos que utilizan el control FederatedPassiveSignIn de WIF, los tokens de seguridad se devuelven a las aplicaciones de usuario de confianza como una cadena. ASP.NET detecta estos tokens como ataques potenciales en el sitio web, y detiene el procesamiento de solicitudes como medida preventiva.

Solución alternativa

Deshabilite la característica de validación de solicitudes ASP.NET. Para hacerlo, en el archivo .aspx de la página web, establezca la configuración Page ValidateRequest que se muestra aquí.

<%@ Page ValidateRequest="false"%>

Como alternativa, en el archivo Web.config de la aplicación web, establezca el atributo validateRequest de la sección <pages/> en false.

<configuration> <system.web> <pages validateRequest="false" /> </system.web> </configuration>

Nota

La validación de solicitudes de ASP.NET está diseñada para ayudar a reducir el riesgo de ataques de scripts entre sitios (XSS) para las páginas web y aplicaciones de ASP.NET. Una aplicación que no valida correctamente los datos introducidos por el usuario puede padecer muchos tipos de ataques de entrada incorrecta. Entre estos se incluyen ataques de scripts entre sitios y ataques de inyección de SQL Server. No hay otro sistema que evaluar cuidadosamente todos los formularios de entrada de una aplicación y asegurarse de que se validan o codifican correctamente, o de que la aplicación se marca con un carácter de escape antes de manipular datos o devolver información al cliente. Para obtener más información sobre el scripting entre sitios, vea malicious HTML tags notice del sitio de Carnegie Mellon University Computer Emergency Readiness Team (CERT). Para obtener más información sobre la validación de solicitudes, vea the www.asp.net white paper about request validation

SVCUtil genera una excepción

Síntoma

Si tiene un usuario de confianza basado en WCF que está configurado con un enlace de federación en el que la dirección del emisor señala a un STS que tiene cinco o más extremos y se compiló utilizando WIF, y ejecuta svcutil.exe contra el usuario de confianza, se produce la siguiente excepción:

Microsoft (R) Service Model Metadata Tool [Microsoft (R) Windows (R) Communication Foundation, versión 3.0.4506.2088] Copyright (c) Microsoft Corporation. Todos los derechos reservados.

Intentando descargar metadatos de 'https://localhost:8008/RP/mex' con WS-Metadata Exchange o DISCO. Error: No se pudieron obtener los metadatos del emisor 'https://localhost:8000/Sts/mex' por el error 'System.InvalidOperationException: Los metadatos contienen una referencia que no se puede resolver: 'https://localhost:8000/Sts/mex'. ---> System.ServiceModel.CommunicationException: Se superó la cuota de tamaño máximo para los mensajes entrantes (65536). Para aumentar la cuota, use la propiedad MaxReceivedMessageSize en el elemento de enlace correspondiente. ---> System.ServiceModel.QuotaExceededException: Se superó la cuota de tamaño máximo para los mensajes entrantes (65536). Para aumentar la cuota, use la propiedad MaxReceivedMessageSize en el elemento de enlace correspondiente.

Causa

Svcutil.exe es una herramienta que se suministra con .NET Framework versión 3.5 y se puede utilizar para generar un proxy y una configuración para hablar con un servicio Web descargando el WSDL del servicio. La herramienta también puede generar servidores proxy para los servicios que se federan con un Security Token Service (STS). De forma predeterminada, la herramienta solo puede descargar un WSDL que tiene 64 KB de tamaño. Un STS con cinco o más extremos genera un WSDL que es mayor de 64 KB y, por lo tanto, se produce una excepción de “tamaño máximo del mensaje”.

Solución alternativa

Puede configurar svcutil.exe para aumentar el límite de tamaño. Svcutil.exe.config es una configuración de ejemplo que se suministra con WIF y se puede encontrar en la carpeta de instalación de WIF. Esta configuración de ejemplo permite a svcutil.exe leer hasta 64 MB de WSDL generados por un STS. La configuración cubre los cuatro transportes (http, https, net.tcp y net.pipe) sobre los cuales WSDL se puede exponer en WCF y aumenta el límite de tamaño de WSDL en todos ellos. Para utilizar este archivo de configuración, copie esta configuración en el mismo directorio que svcutil.exe y, a continuación, ejecute svcutil.exe. Observe que este problema no se produce para los clientes de Windows CardSpace.

CustomAuthorizationManager ya no funciona después de habilitar Windows Identity Foundation en las aplicaciones de WCF

Síntoma

Si ya ha implementado un CustomAuthorizationManager, este dejará de funcionar una vez que habilite WIF mediante ConfigureServiceHost.

Causa

WIF reemplaza el ServiceAuthorizationManager predeterminado por el suyo propio para que se pueda integrar totalmente en el entorno host de WCF. Si configura su ServiceAuthorizationManager antes de llamar a ConfigureServiceHost, WIF reemplazará el ServiceAuthorizationManager personalizado por la versión de WIF.

Solución alternativa

Para obtener más información, vea Compatibilidad de aplicaciones de WCF.

El RP de ASP.NET genera una excepción si mapToWindows es true y useWindowsTokenService es false

Síntoma

Se genera la siguiente excepción en un RP de ASP.NET que está configurado con un Saml11SecurityTokenHandler o Saml2SecurityTokenHandler, con MapToWindows establecida en true y el valor del atributo UseWindowsTokenService en el elemento SamlSecurityTokenRequirement establecido en false:

Error de servidor en la aplicación '/ClaimsAwareWebApp'. ________________________________________ No se ha proporcionado el nivel de representación necesario o el nivel de representación no es válido. (Excepción de HRESULT: 0x80070542) 

Solución alternativa

Establezca siempre MapToWindows y UseWindowsTokenService en el elemento SamlSecurityTokenRequirement en true.

HttpCookie escrita por Windows Identity Foundation tiene la propiedad Secure establecida en false de forma predeterminada

Síntoma

La HttpCookie escrita por WIF tiene su propiedad Secure establecida en false de forma predeterminada. Un sitio web podría tener una página de inicio de sesión protegida mediante SSL, mientras que las páginas internas no. Si una HttpCookie no es segura, el cliente la enviará con cada solicitud al sitio web, independientemente de que esté solicitando una página protegida o no mediante SSL. Esto permite a otros clientes interceptar la cookie y utilizarla para tener acceso a otras páginas que no están protegidas mediante SSL.

Solución alternativa

Establezca siempre la propiedad Secure de HttpCookie en true. Así se asegura de que el cliente solo envía la cookie cuando solicita una página que está protegida mediante SSL.

Se produce un error en CreateChannelActingAs y CreateChannelOnBehalfOf para varias llamadas en el mismo canal

Síntomas

Si utiliza un canal creado con el método CreateChannelOnBehalfOf o CreateChannelActingAs para varias llamadas, WIF podrían generar una excepción.

Solución alternativa

Hay tres soluciones alternativas:

  1. Habilitar las sesiones en el servicio back-end.

  2. Crear un canal por llamada.

  3. Usar WSTrustChannel y CreateChannelWithIssuedToken.