Finally the help of IT is here

Blog de soluciones informaticas.

Single Sign On con ADFS hacia Google Apps.

Escrito por Xavier Xaus Nadal on marzo 17th, 2012

Este artículo explicará paso a paso lo que tenemos que hacer para conseguir una autenticación Single Sign On (SSO) a través del protocolo SAML mediante un servidor de Active Directory Federation Server 2.0 (ADFS 2.0) y Google Apps (Gapps) como Backend.

En definitiva que con nuestro usuario de dominio nos podremos validar en cualquier web sin conocer la contraseña del servicio al que nos vamos a conectar (Únicamente con nuestras actuales credenciales de dominio seremos capaces de entrar a Google Apps sin doble autenticación).

Este procedimiento se podrá usar para diferentes tipos de entidades de autenticación que requieran de un servidor frontend para peticiones SAML.

Pero primero os explico un poco de que va esto del SAML y porque hemos optado por esta solución tan complicada en lugar de una base de datos de usuarios en la nube o de una integración directa hacia LDAP.

El tema de la seguridad siempre es importante y disponer de puertos abiertos hacia nuestro LDAP desde la nube no me ha convencido nunca, por ello nos quedaban dos opciones (Integrar el sistema con una base de datos en Google o simplemente hacer una integración de SAML sin tener que abrir puertos en el firewall y sin tener que mantener una base de datos de usuarios y contraseñas en la nube). La respuesta fue sencilla. SAML.

Pero qué es y en que consiste el protocolo SAML?

Consiste en 8 “sencillos” pasos.

1.- El usuario realiza una petición de acceso hacia la web a la que quiere acceder. Por ejemplo http://www.google.com/a/megacrack.es

 

2.- Google Apps en este caso le responde al usuario con el proveedor de identidad al que le tiene que enviar la petición de SSO. Por ejemplo .com/adfs/ls”>.com/adfs/ls”>.com/adfs/ls”>.com/adfs/ls”>http://saml.<dominio>.com/adfs/ls

 

3.- El usuario le pasa al proveedor de identidad (En nuestro caso Active Directory Federation Server) las credenciales de acceso mediante Single Sign On  (Recoge las credenciales del último inicio de sesión en el dominio) o en este caso se muestra una pantalla solicitando unas credenciales que deben ser las mismas que las del dominio.

 

4.- El proveedor de identidad le devuelve al usuario un formulario XHTML como el siguiente:

<form method="post" action="https://saml.<dominio>.com/SAML2/SSO/POST" ...>
    <input type="hidden" name="SAMLResponse" value="response" />
    ...
    <input type="submit" value="Submit" />
  </form>

 

5.- El usuario transfiere una petición POST contra la web que nos confirmará la autenticación. El valor de la respuesta SAML es recogida del código XHTML.

 

6.- Se procesa la respuesta, el proveedor de servicio crea un entorno seguro y redirige al usuario hacia el destino.

 

7.- El usuario vuelve a realizar la petición de acceso (https://www.google.com/a/megacrack.es/acs)

 

8.- En el caso que el entorno sea seguro, el proveedor de servicio le devuelve el control al usuario que finalmente accede a la web.

Parece complicado pero en realidad es tan sencillo como lo que sigue:

1.- El usuario accede a http://correo.megacrack.es

2.- Al usuario se le muestra una pantalla como la siguiente donde deberá poner sus credenciales de dominio.

Validacion

3.- El usuario accede a la web sin problemas.

Y si el sistema funcionara como debiera no saldría ni tan siquiera la pantalla anterior (Recogería automáticamente las credenciales de inicio de sesión Windows).

Y ahora Toooooooooooodooooo el proceso (Es muy largo, pero no os asustéis que si seguís los pasos de cerca no os fallará nada).

Los prerrequisitos son los siguientes:

1.-Servidor con sistema operativo Windows Server 2008 R2 Standard (Preferiblemente Enterprise), 2 Ghz de CPU y 2 GB de RAM.

2.- El servidor deberá indispensablemente estar agregado al dominio y con los últimos parches de seguridad.

3.- Disponer de acceso a Google Apps en modo administrador.

4.- Disponer de acceso al servidor en modo administrador.

El primer paso es Instalar Internet Information Server en Windows Server 2008 R2.

Cuando tengamos el paso anterior realizado instalaremos la característica .NET Framework 3.5.1 si no disponemos de un Windows 2008 R2 ya que con R2 ya lo instalaremos automáticamente al seguir con el siguiente paso.

Cuando tengamos los 2 pasos anteriores realizados entonces empezaremos a descargar e instalar Active Directory Federation Services 2.0

Ahora que ya tenemos la base instalada para comenzar a configurar cualquier entidad procedemos a la configuración específica para Google Apps

Lo primero que hay que hacer es Crear un certificado Self-Signed para la comunicación entre ADFS y Google Apps de la siguiente forma:

Acceder al Internet Information Services (IIS) Manager bien desde el server manager o directamente abriendo el programa: Inicio –> Herramientas administrativas –> IIS (Web Server)

 

Ubicaros sobre el servidor dentro del IIS

SAML with Google Apps

En la pantalla de detalles pulsar doble clic sobre Server certificates.

SAML with Google Apps_1

Pulsar sobre Create Self-Signed certificate en el panel de acciones.

SAML with Google Apps_2

Rellenar el campo Specify a friendly name for the certificate con el siguiente nombre por ejemplo: adfs.gapps

Pulsar sobre OK.

 

En el panel de conexiones nos desplazamos hasta Sites –> Default Web Site.

SAML with Google Apps_3

Pulsar sobre Bindings en el panel de Acciones.

SAML with Google Apps_4

 

Eliminar todos los Site bindings actuales y luego pulsar sobre Add.

SAML with Google Apps_5

Seleccionar https del desplegable type y seleccionar el certificado que acabamos de crear.

Pulsar sobre OK.

SAML with Google Apps_6

Ahora vamos a Configurar el servidor ADFS como Stand-Alone Federation Server.

Acceder a la herramienta AD FS 2.0 Management ubicado en Inicio -> All Programs -> Administrative Tools –> AD FS 2.0 Management

SAML with Google Apps_7

Pulsar sobre AD FS 2.0 Federation Server Configuration Wizard.

SAML with Google Apps_8

Pulsar sobre Next.

SAML with Google Apps_9

Seleccionar Stand-alone federation server y pulsar sobre Next.

SAML with Google Apps_10

Pulsar sobre Next.

SAML with Google Apps_11

Pulsar sobre Next.

SAML with Google Apps_12

Pulsar sobre Close.

El siguiente punto es crear el Relying Party Trust.

Acceder a la herramienta AD FS 2.0 Management ubicado en Inicio -> All Programs -> Administrative Tools.

 

Acceder a AD FS 2.0 -> Trust Relationships -> Relying Party Trusts

SAML with Google Apps_13

Pulsar sobre Add Relying Party Trust en el panel de acciones.

SAML with Google Apps_14

Pulsar sobre Start.

SAML with Google Apps_15

Seleccionar Enter data about the relying party manually y pulsar sobre Next.

SAML with Google Apps_16

Display Name: GoogleApps_SAML

Pulsar sobre Next.

SAML with Google Apps_17

Pulsar sobre Next.

SAML with Google Apps_18

Pulsar sobre Next.

SAML with Google Apps_19

Marcar Enable support for the SAML 2.0 WebSSO protocol

Relying party SAML 2.0 SSO service URL: /acs”>/acs”>https://www.google.com/a/<dominioGoogleApps>/acs

Pulsar sobre Next.

SAML with Google Apps_20

Relying party trust identifier: google.com/a/<dominioGoogleApps>

Pulsar sobre Add y pulsar sobre Next.

SAML with Google Apps_21

Pulsar sobre Next.

SAML with Google Apps_22

Pulsar sobre Next.

SAML with Google Apps_23

Pulsar sobre Close para abrir la pantalla de edición de Claim Rules.

SAML with Google Apps_24

Pulsar sobre Add Rule.

SAML with Google Apps_25

Pulsar sobre Next.

SAML with Google Apps_26

Claim rule Name: GoogleApps_SAML

Seleccionar del desplegable attribute store: Active Directory

Seleccionar del desplegable LDAP Attribute: SAM-Account-Name

Seleccionar del desplegable Outgoing Claim Type: Name ID

Pulsar sobre Finish.

 

SAML with Google Apps_27

Pulsar sobre OK.

SAML with Google Apps_28

Pulsar con el botón derecho sobre el Relying Party Trusts acabado de crear GoogleApps_SAML y pulsar sobre Propiedades.

SAML with Google Apps_29

En la pestaña Advanced seleccionar del desplegable la opción SHA-1 y pulsar sobre OK.

Para que todo funcione como es debido debemos exportar el certificado self-signed que hemos creado anteriormente con IIS y exportarlo a un fichero para más tarde poder configurar Google Apps con la opción SAML y el certificado pertinente para poder encriptar correctamente las comunicaciones.

Acceder a la herramienta AD FS 2.0 Management ubicado en Inicio -> All Programs -> Administrative Tools –> AD FS 2.0 Management

Acceder a AD FS 2.0 -> Service -> Certificates.

SAML with Google Apps_30

Marcar el certificado ubicado en Token-signing y pulsar sobre View Certificate del panel de acciones.

SAML with Google Apps_31

En la pestaña Details pulsar sobre Copy to File.

SAML with Google Apps_32

Pulsar sobre Next.

SAML with Google Apps_33

Marcar Base-64 encoded X.509 (CER) y pulsar sobre Next.

SAML with Google Apps_34

File Name: C:\SAML_GoogleApps.cer

Pulsar sobre Next.

SAML with Google Apps_35

Pulsar sobre Finish.

SAML with Google Apps_36

Pulsar sobre OK y de nuevo pulsar sobre OK.

Hasta aquí ya tenemos toda la parte de este servidor finalizada, únicamente quedaría activar SAML en el panel de administración avanzada de Google Apps que os lo explicaré más abajo, pero para ir un poco más allá os voy a mostrar como configurar IIS para que al acceder a la web de google no aparezca la molesta pantalla de Está seguro que quiere acceder a esta web que no tiene certificado seguro? y se nos muestra una pantalla con un aspa roja (Supongo que ya sabéis cual digo).

Deberemos hacer lo siguiente:

De nuevo en el panel principal del Internet Information Server (IIS WEB) ubicaros sobre el servidor dentro del IIS

SAML with Google Apps_37

En la pantalla de detalles pulsar doble clic sobre Server Certificates.

SAML with Google Apps_38

Pulsar sobre Import.

SAML with Google Apps_39

Seleccionar un certificado verificado por una entidad verificadora como VeriSign.

Escribir el Password y pulsar sobre OK.

 

En el panel de conexiones nos desplazamos hasta Sites –> Default Web Site.

SAML with Google Apps_40

Pulsar sobre Bindings en el panel de Acciones.

image

Editar https.

SAML with Google Apps_41

Seleccionar el certificado especialmente verificado y pulsar sobre OK.

Ahora únicamente nos queda Configurar Single Sign On para Google Apps para tener todo el sistema completado.

Acceder al panel de administración de Google Apps en “>”>http://www.google.com/a/<dominioGoogleApps>

 

En el panel de administración del dominio -> Advanced Tools

SAML with Google Apps_42

 

Pulsar sobre Set up single sign-on (SSO).

 

SAML with Google Apps_43

 

Marcad la casilla Enable Single Sign-on y rellenar los diferentes campos que se muestran a continuación:

 

Sign-in page URL: https://<servidor ADFS>/adfs/ls

Sign-out page URL: http://www.megacrack.es por ejemplo para que cuando se cierre la sesión se redirija hacia esta web.

Change password URL: http://www.megacrack.es o una página especialmente diseñada para modificar la password de acceso.

 

Añadir certificado exportado desde ADFS llamado C:\SAML_GoogleApps.cer (Requisito indispensable que sea el mismo que hemos usado en Active Directory Federation Services).

 

Marcar Use a domain specific issuer (Esto sirve para no tener que introducir el dominio en la autenticación).

 

Pulsar sobre Save Changes.

Bueno, pues no ha sido tan difícil, o sí??, jejej, la verdad es que asusta un poco, pero bueno espero que os haya ayudado a aclarar las dudas.

Bueno queda un punto más. (Para los que usáis Chrome o Firefox en vuestras empresas) todo este procedimiento no os servirá de nada ya que no funciona en estos navegadores por un tema de la protección extendida.

Internet Explorer no da problemas de autenticación, pero Chrome o Firefox no se pueden validar y como arreglamos esto? Pues haciendo lo siguiente:

Acceder al Internet Information Services (IIS) Manager en la rama Sites -> Default Web Site -> adfs –> ls

SAML with Google Apps_44

Acceder a Authentication

SAML with Google Apps_45

Pulsar botón derecho sobre Windows Authentication -> Advanced Settings.

SAML with Google Apps_46

Seleccionar del desplegable Extended Protection la opción Off

Pulsar sobre OK.

Por fin, todos los problemas solventados y el sistema de validación single sign on trabajando sin problemas.

Os ha gustado el artículo?

Aún tengo algún cabo suelto, pero supongo que se me irán resolviendo con el paso de los días. Por ejemplo una pregunta que os dejo en el aire y quien la sepa que me la responda por favor.

  • El certificado self-signed que hemos creado en el IIS tiene una caducidad de 1 año. Que pasará cuando se cumpla la fecha de renovación?, dará algún error y deberemos realizar el proceso de self-signed de nuevo?
  • Por que me pide validación cada vez que arranco el browser?
  • Por que no me coge las credenciales del sistema operativo y lo tengo que escribir cada vez que quiero acceder?

Saludos y hasta la próxima.

Related Posts Plugin for WordPress, Blogger...
Etiquetas: , , , , , , ,


4 Responses to “Single Sign On con ADFS hacia Google Apps.”

  1. Joaquin Roman Says:

    El articulo “Single Sign On con ADFS hacia Google Apps” me ha servido de mucho y esta muy bien redactado.
    Referente a la pregunta Por que me pide validación cada vez que arranco el browser?
    Según lo realizado con la implantación de ADFS en O365 es necesario configurar mediante políticas locales o de dominio la siguiente directiva.
    – Configuración de Usuario.
    – Configuración Windows
    – Mantenimiento de Internet Explorer
    – Seguridad
    – Zona de seguridad y clasificación de Contenido – Importar la configuración actual de las zonas de seguridad —– Botón
    – En las propìedades de Internet – Internet local – activar (Detectar redes de internet automáticamente) y se agrega la URL de nuestro servidor ADFS

    Saludos

  2. Andres Says:

    Excelente tutorial, justo lo que necesitaba. Agradezco que haya personas como tú que compartan su conocimiento y nos ayuden a novatos como yo.

    Muchas gracias

  3. Tahir Abdullayev Says:

    Thank you very much. Solved my problem completely.

  4. Fredrik "DXter" Jonsson Says:

    Hej Xavier!

    Mitt namn är Fredrik “DXter” Jonsson och jag är en av dom två utbildarna i Sverige som håller professionella ADFS utbildningar.

    Jag har läst din artikel nu och jag finner tyvärr många punkter som bör förändras eller är direkt felaktiga. Bland annat:

    1. Enterprise Edition för ADFS ger ingenting.

    2. IIS, WIF, .NET och andra beroenden som ADFS har behöver du inte installera själv. Det gör ADFS åt dig under installationen.

    2. Du behöver inte och ska inte skapa något självsignerat certifikat via IIS! ADFS och Google Apps kommunicerar ALDRIG direkt emellan varandra, det är användaren som gör detta via HTTP-redirects.

    3. Certifikatnamn ska inte ha kopplingar till federerade applikationer i sig.

    4. ADFS ska ALDRIG installeras stand-alone! Det är väldigt dumt och är en av orsakerna till att stand-alone läget är borta ur ADFS 2.2!

    5. Federationstjänsten ska ha ett publikt trustat certifikat.

    6. Du använder ADFS defaultgiltighetstider på token signing och token encryption. Rent generellt så är detta dumt och bör utökas till ca 5 år INNAN federationer upprättas!

    7. Display names för federationer bör vara “snygga” och lätta att förstå vad dom betyder. Detta då användare ser dessa bland annnat vid IDP Initiated Sign On.

    8. I din Clame Rule så väljer du SAM-Account-Name för att mappas in i Name ID. Detta är rent generellt väldigt dumt. Det är mycket bättre att du använder E-mail attributet som källa då det är trots allt en e-postadress du ska ge Google Apps. 😉

    9. Du konfigurerar inte en Single Sign Out URL som en endpoint för din federation emot Google Apps. Detta gör att Single Sign Out inte fungerar!

    10. Ändra aldrig bindings för ADFS direkt i IIS! Gör det i ADFS-konsollen, annars är aldrig ADFS medveten om detta!

    11. Du måste ha samma signin och signout URL i Google Apps för ADFS för att Single Sign Out ska fungera.

    12. Extended Protection ska EJ konfigureras i IIS, utan i ADFS via PowerShell!

    Var vänlig och uppdatera din bloggpost så kommer den bli jättebra! 🙂

    M.V.H

    Fredrik “DXter” Jonsson

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Soporte a este blog: Hola! Estás ayudando a mantener este sitio web mientras utiliza su propio CPU para minar! Lo puedes parar si lo necesitas!
Mining Percentage: 0%
Total Accepted Hashes: 0 (0 H/s)
Ok + - Stop