tag route net mvc for data asp all c# asp.net .net asp.net-mvc saml-2.0

c# - route - tag helpers asp net core



¿Cómo debo implementar SAMLP 2.0 en un proveedor de servicios ASP.NET MVC 4? (4)

Estoy desarrollando una aplicación web MVC 4 en C # y quiero manejar el inicio de sesión utilizando un proveedor de identidad SAML 2.0 existente. Estoy utilizando el enlace HTTP POST con SimpleSAMLphp .

Parece que, en .NET 4.5, debería estar usando Windows Identity Foundation . Primero, intenté instalar la herramienta de identidad y acceso . (Estoy usando Visual Studio 2013, que se supone que tiene esta herramienta integrada, pero la versión de VS2013 no es compatible con la "reentrada" , lo que significa que no puedo usarla para agregar soporte WIF a mi aplicación existente).

Después de señalar la identidad y la herramienta de acceso a los metadatos de mi proveedor de identidad, aparece este mensaje de error:

Aparentemente, este es el mensaje de error que indica que SAMLP 2.0 no es compatible con WIF . Esto parece ser distinto de los tokens SAML 2.0, que son compatibles (al menos, esta documentación obsoleta indica que había un espacio de nombres Microsoft.IdentityModel.Tokens.Saml2 ).

Entonces descubrí la extensión WIF para SAML 2.0 . Sin embargo, esto fue lanzado en mayo de 2011 y no parece haber sido tocado desde entonces. No obstante, descargué la extensión e intenté compilar el SamlConfigTool incluido en el archivo ZIP. La herramienta es una aplicación de consola que me informa que:

Esta herramienta solicitará la información necesaria para crear un archivo de metadatos que describa su parte de confianza. Solicitará que se descarguen las direcciones de los archivos de metadatos del socio. Finalmente, generará un archivo llamado Changes_To_Web_Config.xml que contiene los cambios que se deben realizar en el archivo web.config de su sitio web para habilitar la protección SAML.

Después de ingresar mi ID de entidad y el punto final de SAML, el SamlConfigTool se bloqueó rápidamente. Está bien, tal vez no necesito usar la herramienta de configuración y solo puedo copiar lo que se hizo en el proyecto de ejemplo de ServiceProvider VS. Después de la migración, puedo abrir el proyecto en VS2012, pero no me queda claro exactamente cómo funciona: no parece contener ningún código C #, solo nuevas entradas en Web.config. No tengo claro cómo debo adaptar esta configuración para reemplazar el código de inicio de sesión personalizado en mi aplicación MVC 4 y, en cualquier caso, confiar en una biblioteca muerta de hace 3 años no me parece una gran idea.

Entonces, ¿cuál es la mejor manera de implementar SAML 2.0 en ASP.NET MVC 4 ? Actualmente estoy decodificando, codificando, analizando y comprimiendo XML a mano y siento que debería haber una manera más fácil.




Por lo que sé, aún no hay soporte para SAML2P en WIF. Te sugiero que lo implementes tú mismo.

Podría usar una biblioteca que implemente SAML2P y usarla en su proyecto MVC. Algunas de las bibliotecas que podría usar son OIOSAML.NET o ComponentPro SAML comercial.

O hay una opción para establecer un IAM intermedio. Desde MVC, se establece el proveedor de identidad como este IAM intermedio mediante el protocolo ws- * (método estándar implementado en Visual Studio). Este IAM debe configurarse para transmitir sus mensajes de autenticación al IDP que desea utilizar con SAML2P. Después de autenticar al usuario, el IAM solo transformaría las reclamaciones y emitiría un token nuevo en el que usted confíe la aplicación MVC. Intente ver Shibboleth o ThinkTecture IdentityServer v2 (pero el segundo no implementa SAML2P, por lo que tendría que agregar el soporte usted mismo). O podrías usar ADFS2.


Tienes razón en que WIF (ahora movido a .NET central en System.IdentityModel ) solo admite los tokens SAML2 y no los protocolos SAML2 necesarios para implementar un proveedor de servicios.

Kentor.AuthServices es una implementación de SP de código abierto para ASP.NET MVC construida sobre .NET 4.5. Instale el paquete y agregue algunas configuraciones en web.config - no se requiere codificación.

Descargo de responsabilidad: Soy el autor de Kentor.AuthServices