2011-10-06 17 views
7

Tengo lo que creo que es una pregunta bastante complicada, así que haré todo lo posible para articularlo aquí.¿Implementando SSO en .NET Web Farm para varios sitios web de comercio electrónico con WIF?

Estoy buscando una solución de inicio de sesión único (SSO). Soy consciente de muchas de las opciones que existen, pero las he descartado a la mayoría al agregar criterios que deben cumplir. Aquí están los criterios:

1.) El SSO se debe agregar a un "sistema" existente.
2.) El "sistema" existente consiste en una "X" cantidad de sitios web.
3.) Todos los sitios web "x" son e-commerce.
4.) Todos los sitios web son propiedad de la empresa Y, para quienes el 95% del sistema se construyó internamente.
5.) Cada uno de los "X" sitios web se encuentra en la misma Web Farm.
6.) Todos los sitios web de compartir los siguientes componentes:

  • DAL (Capa de acceso a datos)
  • base de datos (carros, pedidos, usuarios, inventario, etc ...)
  • de autenticación (Formularios Auth en WebForms y MVC).

7.) Para que el entorno actual funcione, las llaves de máquina ya se han sincronizado entre los servidores de equilibrio de carga (y lo han estado durante algún tiempo).
8.) Se requiere alta disponibilidad y estabilidad debido a un gran volumen de tráfico muy.

Todos estos criterios me han llevado por el camino de WIF y un STS personalizado para usar con nuestros servicios de autenticación de membresía existentes. Las cosas como OpenID y otras soluciones de código abierto parecen inclinarse hacia la interoperabilidad cruzada de la compañía; Que no es necesario o deseado. La solución ideal será 100% interna y permitirá a los usuarios iniciar sesión en el sitio web "1", hacer lo que quieran y luego ir al sitio "2" (también alojado detrás del equilibrador de carga e incluso en el mismo servidor web ya que el usuario era para el sitio web "1") y ya ha iniciado sesión.

Aquí hay una lista de métodos alternativos que he analizado y el motivo correspondiente para descartarlos (¿o debería volver a considerar algunas de estas alternativas?).

  • OpenID: Este fue descartada por varias razones, principalmente porque mi organización está buscando "interno" y la integración con SSO sitios web externos o un sistema de identificación utilizado con sitios web externos no es deseada.
  • CAS: En su mayor parte, esto también parece una alternativa decente. En última instancia, se descartó porque las tecnologías que utiliza (Java, Apache, Maven, etc ...) requerirán un esfuerzo adicional y dinero para comprender, implementar, apoyar y ampliar (principalmente una tienda .NET).
  • OAuth: Parece que está orientado más a la exposición de datos protegidos a través de servicios web. Totalmente personalizado (http://www.codeproject.com/KB/aspnet/CrossDomainSSOModel.aspx): Un enfoque totalmente personalizado puede tener un tiempo de implementación demasiado alto y la seguridad es más una preocupación con este método.
  • DotNetOpenAuth: Dependiente/basado en OpenID.

Entonces, la pregunta es: ¿funcionará WIF en nuestro entorno actual dado el equilibrador de carga y los datos de cuenta de usuario ya compartidos en los sitios web o hay un mejor enfoque?

Háganme saber si necesita alguna aclaración.

EDIT:

sólo para aclarar lo que estoy buscando para lograr (o piensan que estoy tratando de lograr dada la investigación que he hecho) es:

Current Setup (JPEG hosted on dropbox)
Desired Setup (JPEG hosted on dropbox)

Respuesta

2

ADFS v2.0 solo se autentica contra AD. Si su método de autenticación actual es algo más (por ejemplo, SQL Server), entonces necesita un STS personalizado.

¿Son estas aplicaciones todas ASP.NET?

Si es así, todos deben estar activados mediante WIF.

De lo contrario, p. Java deberá protegerlos con otra solución, p. OpenSSO/Ping Federar y federar este producto con ADFS.

Si es ASP clásico, existen formas de permitir que ADFS maneje la autenticación, pero la autorización es un problema. Los roles estarán dentro de un objeto de reclamo al cual Classic ASP no tiene forma de acceder. También puedes usar C2WTS para esto.

¿Está buscando autenticación o autorización o ambas? ADFS proporciona las funciones dentro de un objeto de reclamo por lo que el mecanismo de autorización existente en sus programas puede tener que cambiar.

Puede equilibrar la carga de sitios ADFS.

ADFS ciertamente puede habilitar SSO en todos sus sitios. También potencialmente le permite federarse con otros sitios/organizaciones y usar credenciales externas (por ejemplo, Facebook) a través de Azure ACS, si eso es algo que debe tener en cuenta en el futuro.

También le permite integrarse con SharePoint 2010, CRM Dynamics 2010 y Office 365, todos los cuales están habilitados para reclamaciones.

+0

Los sitios web son todos .NET, no clásico. Mi comprensión con ADFS es que Active Directory es la fuente en la que el STS valida el reclamo del usuario (puedo estar equivocado). Si ese es el caso, entonces ADFS no es una opción viable ya que nuestros datos de membresía no están relacionados en absoluto con AD. ¿Se puede utilizar WIF sin AD? Si no es ADFS, ¿no se puede equilibrar la carga? También creo que necesitaríamos autenticación y autorización, ya que ciertas páginas se comportan de manera diferente cuando un usuario ha sido autenticado. – ooPeanutButter

+0

La forma en que funcionaría es que federaría su STS (que se autentica contra, por ejemplo, SQL Server) con ADFS. Un STS personalizado puede autenticarse contra todo lo que desee. Los atributos que usa para la autorización se pueden derivar de cualquier combinación de AD, SQL Server o LDAP. No tiene que usar WIF/ADFS para la autorización. Puede usarlo simplemente para SSO (autenticación) y dejar su código de autorización como es – nzpcmad

+0

Parece que su respuesta es correcta, pero podría confirmar esto con los diagramas que agregué en la edición? Tenga en cuenta la ausencia completa de cualquier cosa relacionada con AD en los diagramas. ¡Gracias! – ooPeanutButter

Cuestiones relacionadas