Configuración de SharePoint 2010 y ADFS v2 al completo

En esta entrada de blog ofreceré un tutorial completo sobre la configuración de SharePoint 2010  y ADFS v2 para usar la autenticación de notificaciones de SAML.  Incluiré pasos y scripts de PowerShell como demostración e intentaré reunir todas las piezas en una única y extensa entrada de blog.

Comencemos con una breve introducción a los componentes implicados y lo que tendremos que hacer.  En este escenario, ADFS v2 es nuestro proveedor de identidad, también conocido como STS (servicio de token de seguridad) de IP.  Tenemos que configurar ADFS con información sobre nuestro usuario de confianza.  En este caso, SharePoint es nuestro usuario de confianza y depende de ADFS para realizar la autenticación y proporcionar las notificaciones.  Desde la perspectiva de SharePoint, tenemos que configurarlo para poder confiar en el STS de IP que nos envía las notificaciones y luego tenemos que configurar un sitio y una aplicación web que consuman dichas notificaciones.

Vamos a comenzar con la creación del usuario de confianza en ADFS.  En realidad no importa el orden en que se realicen estos pasos, pero por práctica, suelo configurar ADFS en primer lugar.  Así que vaya al servidor donde está instalado ADFS y abra la aplicación de administración de AD FS 2.0. Expanda el nodo Relaciones de confianza (Trust Relationships) y haga clic en el nodo Relaciones de confianza de usuarios autenticados (Relying Party Trusts).

Haga clic en el vínculo Agregar relación de confianza para usuario autenticado (Add Relying Party Trust) en el panel derecho para iniciar el Asistente para agregar relación de confianza para usuario autenticado (Add Relying Party Trust wizard). 

Haga clic en el botón Inicio (Start) para continuar.

Seleccione la opción para escribir los datos sobre el usuario de confianza manualmente (Enter data about the relying party manually) y, a continuación, haga clic en el botón Siguiente (Next).

Escriba un Nombre para mostrar (Display name) y, opcionalmente, una descripción del usuario de confianza y, a continuación, haga clic en el botón Siguiente (Next).

Seleccione la opción para usar el perfil de AD FS 2.0 (AD FS 2.0 profile) y, a continuación, haga clic en el botón Siguiente (Next).

Puede seleccionar un certificado para cifrar el token de SAML propiamente dicho.  Esto no se realiza frecuentemente, ya que ADFS requerirá que la conexión a SharePoint se establezca mediante SSL, por lo que el canal por el cual se envía el token ya se encontrará cifrado.  Haga clic en el botón Siguiente (Next).

Active la casilla de verificación para habilitar la compatibilidad con el protocolo pasivo WS-Federation (Enable support for the WS-Federation Passive protocol).  En la dirección URL del protocolo, debe escribir la dirección URL del sitio raíz de la aplicación web de SharePoint e incluir el subdirectorio “_trust”.  En este ejemplo, la dirección URL a la aplicación web de SharePoint es https://seo14, por lo que la dirección URL del protocolo pasivo WS-Federation es https://seo14/_trust/.  Después de escribir la dirección URL, haga clic en el botón Siguiente (Next).

Para el identificador de confianza del usuario de confianza, debe escribir un dominio que la aplicación web pasará a ADFS cuando los usuarios inicien sesión en la aplicación web.  El dominio generalmente se crea en el formato urn:foo:bar.  El dominio se asocia a una aplicación web y especifica el modo en que ADFS puede asignar la solicitud de inicio de sesión realizada a las relaciones de confianza para usuario autenticado que tiene.  Al usarse con SharePoint, ADFS ve el dominio asociado con la solicitud de inicio de sesión, lo consulta para encontrar la relación de confianza para usuario autenticado y, después de autenticar al usuario, busca en dicha dirección URL del protocolo pasivo WS-Federation para saber a dónde redirigir al usuario posteriormente.  En este caso, he escrito un dominio urn:seo:sharepoint.  Al intentar navegar a mi sitio de SharePoint en https://seo14, me redirigiré a ADFS y configuraré SharePoint para usar el dominio urn:seo:sharepoint para dicha solicitud.  Después de que ADFS me haya autenticado, me volverá a redirigir a https://seo14/_trust/, ya que esa es la dirección URL del protocolo pasivo de dicho usuario de confianza.  Agregue el dominio que desee usar aquí y anótelo porque deberá volver a escribirlo al configurar SharePoint.  A continuación, haga clic en el botón Siguiente.

En la mayoría de los casos, deseará que todos los usuarios puedan usar este usuario de confianza.  Supongamos que este es el caso para este escenario, así que solo tiene que aceptar la opción predeterminada y hacer clic en el botón Siguiente.

Si en este momento necesita hacer algún otro cambio de configuración en la relación de confianza para usuario autenticado, puede hacerlo aquí.  En este escenario no es necesario, así que simplemente haga clic en el botón Siguiente para continuar.

Ya hemos terminado de configurar el usuario de confianza, pero todavía debemos crear una regla de notificación para indicar a ADFS qué notificaciones debe devolver a SharePoint.  Deje la casilla de verificación activada para abrir el cuadro de diálogo de edición de reglas de notificación (Open the Edit Claim Rules) y haga clic en el botón Cerrar (Close).

Ahora crearemos una nueva regla, así que haga clic en el botón Agregar regla... (Add Rule...).

Enviaremos los atributos LDAP como notificaciones, ya que en este caso obtenemos información desde Active Directory, lo que significa que autenticaremos en ADFS y ADFS usará Active Directory corporativo para autenticarnos y determinar nuestros atributos.  Deje seleccionado el valor predeterminado y haga clic en el botón Siguiente (Next) para continuar.

Comience escribiendo un nombre de regla de notificación; puede ser cualquier cosa.  Después, en la lista desplegable del almacén de atributos (Attribute store), seleccione Active Directory.  A continuación, en nuestro escenario deseamos devolver a SharePoint la dirección de correo electrónico y los grupos a los que pertenece el usuario.  Usaremos la dirección de correo electrónico como el identificador de la persona, y deseamos que todos los grupos a los cuales pertenece un usuario se envíen en la notificación Rol (Role).  Para realizar la asignación, seleccione el atributo que desea en la lista desplegable del lado izquierdo y, a continuación, seleccione la notificación con la que se enviará en la lista desplegable del panel derecho.  En este caso, queremos que el atributo E-Mail-Addresses de Active Directory se envíe en la notificación estándar Direcciones de correo electrónico (E-Mail Address).  Queremos que los grupos a los que pertenece un usuario se envíen en la notificación estándar Rol (Role).  En este caso, he seleccionado Token-Groups – Unqualified Names porque envía el nombre de grupo como una cadena simple (el nombre del grupo).  Puede enviar el SID de los grupos, pero este resulta más difícil de usar al intentar asignar una notificación Rol (Role) a un grupo de SharePoint.  Una vez completada la configuración de esta regla como se describe aquí, haga clic en el botón Finalizar (Finish) para completar la regla. 

Haga clic en el botón Aceptar (OK) para completar el proceso de creación de la relación de confianza para usuario autenticado en ADFS.  Desde el punto de vista de la configuración, no queda más nada por hacer en ADFS.  Sin embargo, hay una cosa que debemos conseguir.  ADFS usa un certificado para firmar los tokens que envía.  Esto garantiza al consumidor del token que este no se ha alterado desde el momento de su creación.  Para configurar SharePoint, necesitamos una copia de este certificado, ya que lo usaremos al configurarlo para usar ADFS como el STS de IP.  Para obtener este certificado de firma de tokens desde ADFS, expanda el nodo Servicio (Service) y haga clic en el nodo Certificados (Certificates).

Encontrará una sección de certificados de firma de tokens.  Es posible que disponga de varios certificados de firma de tokens, pero siempre habrá SOLO un certificado de firma de token primario.  Haga clic en el certificado y, a continuación, haga clic en el vínculo Ver certificado (View Certificate) en el panel derecho.

En este caso particular decidí usar el certificado que creé para SSL en el sitio web de ADFS.  Con esto no intento decir que sea necesario o recomendable, es simplemente lo que yo decidí hacer.  Ahora que está visualizando el certificado, haga clic en la pestaña Detalles (Details) de la parte superior del cuadro de diálogo.

Haga clic en el botón Copiar en archivo... (Copy to File...).  Se iniciará el asistente para guardar una copia del certificado en el disco.

Haga clic en el botón Siguiente (Next) para continuar.

No necesita la clave privada, de modo que acepte la configuración predeterminada y haga clic en el botón Siguiente (Next).

El formato predeterminado es correcto así que haga clic en el botón Siguiente (Next) para continuar.

Seleccione una ubicación para guardar el certificado y haga clic en el botón Siguiente (Next).  Asegúrese de recordar esta ubicación porque deberá copiar el certificado desde donde lo guardó hasta el servidor de SharePoint.

Ya se ha capturado toda la información necesaria para copiar el certificado localmente, así que haga clic en el botón Finalizar (Finish) para completar el asistente y guardar el certificado en un archivo local.  Copie este archivo en el servidor de SharePoint y de este modo terminamos con el servidor de ADFS.

Cambie al servidor de SharePoint y comencemos a configurarlo.  Antes de comenzar a configurar SharePoint, recomiendo crear una nueva aplicación web en este momento.  Créela para usar la autenticación de notificaciones, pero seleccione Autenticación integrada de Windows – NTLM como la configuración de autenticación.  Asegúrese de configurar la aplicación web de modo que use el puerto 443 y de seleccionar el botón de radio Usar Capa de sockets seguros (SSL).   Una vez creada la aplicación web, recuerde editar los enlaces del nuevo servidor virtual en el Administrador de IIS para poder asignar el certificado SSL adecuado.  Estos pasos no se explican en esta entrada de blog, pero podrá encontrar abundante información en Internet.  Para resumir, en nuestro escenario he creado una aplicación web que usa el puerto 443 y SSL, y su dirección URL es https://seo14.

Lo primero que haré en SharePoint es agregar el certificado de firma de tokens que copié desde el servidor de ADFS.  No obstante, antes de hacerlo, necesito observar el certificado.  Es posible que el certificado de firma de tokens tenga uno o varios certificados primarios en su cadena.  En ese caso, debo agregar cada certificado de esa cadena a la lista de SharePoint de entidades de certificación raíz de confianza.  Para ello, debo buscar el certificado de firma de tokens que copié desde ADFS y hacer doble clic en él; se abrirá la ventana de propiedades del certificado.  Si hace clic en la pestaña Ruta de certificación (Certification Path), podrá ver si hay algún otro certificado en la cadena.  En este escenario, mi certificado de firma de tokens sí que tiene un certificado primario: es el certificado de entidad de certificación raíz.

Lo que debo hacer ahora es guardar una copia localmente de cada certificado de la cadena de mi certificado de firma de tokens.  Para ello, puedo hacer clic en el certificado, lo que habilitará el botón Ver certificado en el cuadro de diálogo.  Si hago clic en él, se abrirá un cuadro de diálogo de propiedades independiente para dicho certificado.  A continuación, puedo seguir el mismo proceso descrito anteriormente para guardar una copia del certificado en el disco:  hacer clic en la pestaña Detalles, hacer clic en el botón Copiar en archivo... y, a continuación, guardar el certificado locamente como un archivo .CER.  En mi caso, hice esto y lo guardé en C:\adfsParent.cer.  Por lo que ahora en mi servidor de SharePoint tengo dos certificados: 

·         C:\adfs.cer, que es el certificado de firma de tokens que copié desde el servidor ADFS

·         C:\adfsParent.cer, que es el certificado primario de mi certificado de firma de tokens

Ahora que tengo ambos certificados, debo agregarlos a mi lista de entidades de certificación raíz de confianza.  Lo haré en PowerShell con este script:

$root = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\adfsParent.cer")

New-SPTrustedRootAuthority -Name "Token Signing Cert Parent" -Certificate $root

$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\adfs.cer ")

New-SPTrustedRootAuthority -Name "Token Signing Cert" -Certificate $cert

Una vez ejecutados esos comandos en PowerShell, el resultado se verá así:

A continuación, crearé las asignaciones de notificaciones que usará SharePoint.  Si lo recuerda, anteriormente en este artículo mencioné que iba a usar las notificaciones Dirección de correo electrónico (E-Mail Address) y Rol (Role) en SharePoint.  Este es el script de PowerShell que usaré para crear dichas asignaciones:

$map = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" -IncomingClaimTypeDisplayName "EmailAddress" -SameAsIncoming

$map2 = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.microsoft.com/ws/2008/06/identity/claims/role" -IncomingClaimTypeDisplayName "Role" -SameAsIncoming

A continuación, crearé una variable para el dominio que deseo que use SharePoint.  En este escenario, dije que usaría el dominio urn:seo:sharepoint.  Este es el script de PowerShell para crear la variable del dominio:

$realm = "urn:seo:sharepoint"

Ya estoy listo para crear el SPTrustedIdentityTokenIssuer.  Aquí es donde combino toda la información de configuración para que SharePoint sepa cómo conectarse y trabajar con el STS de IP.  Mostraré el script de PowerShell y, a continuación, explicaré las partes importantes:

$ap = New-SPTrustedIdentityTokenIssuer -Name "SAML Provider" -Description "SharePoint secured by SAML" -realm $realm -ImportTrustCertificate $cert -ClaimsMappings $map,$map2 -SignInUrl "https://congen1.contoso.local/adfs/ls" -IdentifierClaim "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"

El atributo “Name” es lo que se mostrará en la aplicación web al configurar el proveedor de autenticación que usará.  El atributo “realm” es donde se complementa el dominio que deseamos que use SharePoint con este emisor de token de identidad de confianza.  El atributo “ImportTrustCertificate” es donde se pasa el certificado de firma de tokens copiado desde el servidor de ADFS.  El atributo “ClaimsMappings” es donde se indican las notificaciones que se desea que use el emisor de token de identidad de confianza.  “SignInUrl” es la dirección URL a la que debe redirigirse a los usuarios para autenticarse con el STS de IP.  En este caso, deseamos que los usuarios se autentiquen con el servidor de ADFS mediante la seguridad integrada de Windows, por lo que se envían al subdirectorio /adfs/ls.  Por último, el atributo “IdentifierClaim” indica a SharePoint qué notificación será la notificación que se usará para identificar a los usuarios.  En este caso, se indica que el modo de identificar a una persona es mediante la dirección de correo electrónico.

Una vez ejecutado el último comando de PowerShell, contamos con un SPTrustedIdentityTokenIssuer que puede usarse con nuestra aplicación web de SharePoint.  De modo que ahora abriremos el explorador y navegaremos a Administración central. Haga clic en el vínculo Administrar aplicaciones web, haga clic en la aplicación web de la lista que usará ADFS para la autenticación y, a continuación, haga clic en el botón Proveedores de autenticación de la cinta de opciones.  Haga clic en el vínculo del cuadro de diálogo que corresponde a la zona donde se usará ADFS para la autenticación.  Desplácese hacia abajo hasta la sección de tipos de autenticación.  Ahora puede anular la selección de NTLM y debería ver un nuevo proveedor denominado “Proveedor SAML” (SAML Provider) en la lista de proveedores de confianza. 

Active la casilla de verificación situada junto a este y haga clic en el botón Guardar para guardar los cambios.  Ahora puede crear una colección de sitios para la aplicación web.  Como se mencionó anteriormente, en esta entrada de blog no se aborda la descripción del proceso paso a paso, pero hay algo que es importante que recuerde.  Al agregar el administrador de la colección de sitios, recuerde escribir el nombre en el formato de la notificación de identidad.  Por ejemplo, en este escenario la notificación de identidad es la dirección de correo electrónico.  Por lo que al agregar el administrador de la colección de sitios, el nombre que usé fue administrator@contoso.local, porque esa es la dirección de correo electrónico de la persona que deseo que sea el administrador de la colección de sitios.

Ya estoy listo para intentar ir a mi nueva colección de sitios.  Abro el explorador, escribo https://seo14  y presiono ENTRAR.  Lo primero que sucede es que me redirijo al SignInUrl del SPTrustedIdentityTokenIssuer asociado a mi aplicación web  Si lo recuerda, en el script de PowerShell usado para crear el SPTrustedIdentityTokenIssuer, la dirección URL era  https://congen1.contoso.local/adfs/ls.   De modo que esto es lo que se ve al escribir la dirección URL en mi sitio de SharePoint en el explorador:

Puede ver que la dirección URL de la ventana del explorador ahora apunta a mi servidor de ADFS y puede observar que el gráfico en el fondo detrás del cuadro de diálogo de inicio de sesión es del servidor de ADFS.  También observará que inicio sesión con mis credenciales de Windows, es decir dominio\usuario.  Recuerde que puedo hacer esto porque autentico en el servidor de ADFS, no en SharePoint.  SharePoint está configurado para usar la dirección de correo electrónico como mi identidad, pero lo que sucederá es que autenticaré en el servidor de ADFS y, a continuación, este usará la regla de notificación creada para extraer las direcciones de correo electrónico y los grupos y colocarlos en notificaciones que se devolverán a SharePoint.  Una vez autenticado, me redirigiré de vuelta a SharePoint en https://seo14/_trust/, tal y como lo configuré en el usuario de confianza en ADFS.  En ese momento, SharePoint completará el proceso de autenticación y tomará las notificaciones que posee en el token de SAML y las convertirá en un SPUser.  Finalmente llego a la página principal del sitio:

Observará que el control de inicio de sesión en la parte superior derecha de la página muestra mi identidad como una dirección de correo electrónico, ya que esa es mi notificación de identidad.

Ese es el proceso de un extremo a otro completo con algunas explicaciones adicionales.  Debería poder usarlo para configurar y ejecutar los sitos si sigue estas instrucciones.

Esta entrada de blog es una traducción. Puede consultar el artículo original en Configuring SharePoint 2010 and ADFS v2 End to End