Implementación de la autenticación federada
SE APLICA A:2013 2016 2019 Subscription Edition SharePoint en Microsoft 365
Implementación de la autenticación federada en SharePoint Server
En esta guía paso a paso se explica cómo configurar la autenticación federada en SharePoint con Servicios de federación de Active Directory (AD FS).
Introducción a la autenticación federada
En la autenticación federada, SharePoint procesa los tokens SAML emitidos por un servicio de token de seguridad (STS) externo de confianza. Un usuario que intenta iniciar sesión se redirige a ese STS, que autentica al usuario y genera un token SAML tras la autenticación correcta. A continuación, SharePoint procesa este token y lo usa para crear su propio y autorizar al usuario a acceder al sitio.
Requisitos previos
Para realizar la configuración, necesita los siguientes recursos:
- Una granja de servidores de SharePoint 2013 o posterior.
- Una granja de SERVIDORES de AD FS versión 2 o posterior, ya creada, con la clave pública del certificado de firma de AD FS exportado en un archivo .cer.
En este artículo se usan los siguientes valores:
- Dirección URL del sitio de SharePoint:
https://spsites.contoso.local/
- Dirección URL del sitio de AD FS:
https://adfs.contoso.local/adfs/ls/
- Dominio (identificador de usuario de confianza):
urn:contoso:spsites
- Tipo de notificación de identidad:
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
- Tipo de notificación de rol:
http://schemas.microsoft.com/ws/2008/06/identity/claims/role
- Administrador de la colección de sitios de Windows:
contoso\yvand
- Valor de correo electrónico del administrador de la colección de sitios federado (AD FS):
yvand@contoso.local
Creación de un usuario de confianza en AD FS
En este paso, creará un usuario de confianza en AD FS. El usuario de confianza almacenará la configuración necesaria para trabajar con SharePoint y las reglas de notificación que definen qué notificaciones se insertarán en el token SAML tras la autenticación correcta.
En el servidor de AD FS, inicie PowerShell y ejecute el siguiente script:
### STEP 1: Create the relying party
# Name of the Relying Party
$name = "SPSites"
# Unique identifier of the Relying Party (in SharePoint it's referred to as the realm)
$identifier = "urn:contoso:spsites"
# Authority that authenticates users
$identityProvider = "Active Directory"
# SharePoint URL where user is redirected upon successful authentication
$redirectURL = "https://spsites.contoso.local/_trust/default.aspx"
# Allow everyone to use this relying party
$allowEveryoneRule = '=> issue (Type = "http://schemas.microsoft.com/authorization/claims/permit", value = "true");'
# Create the Relying Party
Add-ADFSRelyingPartyTrust -Name $name -Identifier $identifier -ClaimsProviderName $identityProvider -Enabled $true -WSFedEndpoint $redirectURL -IssuanceAuthorizationRules $allowEveryoneRule -Confirm:$false
### STEP 2: Add claim rules to the relying party
# Rule below configured relying party to issue 2 claims in the SAML token: email and role
$claimsRule = @"
@RuleTemplate = "LdapClaims"
@RuleName = "AD"
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(
store = "Active Directory",
types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", "http://schemas.microsoft.com/ws/2008/06/identity/claims/role"),
query = ";mail,tokenGroups(fullDomainQualifiedName);{0}",
param = c.Value);
"@
# Apply the rule to the Relying Party
Set-ADFSRelyingPartyTrust -TargetName $name -IssuanceTransformRules $claimsRule
Cuando se completa el script, el usuario de confianza de AD FS debe tener este aspecto:
Configuración de SharePoint para confiar en AD FS
En este paso creará un SPTrustedLoginProvider que almacenará la configuración que SharePoint necesita para confiar en AD FS. Inicie el Shell de administración de SharePoint y ejecute el siguiente script para crearlo:
# Define claim types
$email = New-SPClaimTypeMapping "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" -IncomingClaimTypeDisplayName "EmailAddress" -SameAsIncoming
$role = New-SPClaimTypeMapping "http://schemas.microsoft.com/ws/2008/06/identity/claims/role" -IncomingClaimTypeDisplayName "Role" -SameAsIncoming
# Public key of the AD FS signing certificate
$signingCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\Data\Claims\ADFS Signing.cer")
# Unique realm (corresponds to the unique identifier of the AD FS Relying Party)
$realm = "urn:contoso:spsites"
# Set the AD FS URL where users are redirected to authenticate
$signinurl = "https://adfs.contoso.local/adfs/ls/"
# Create a new SPTrustedIdentityTokenIssuer in SharePoint
New-SPTrustedIdentityTokenIssuer -Name "Contoso.local" -Description "Contoso.local" -Realm $realm -ImportTrustCertificate $signingCert -ClaimsMappings $email,$role -SignInUrl $signinurl -IdentifierClaim $email.InputClaimType
Importante
NO use la opción -UseDefaultConfiguration con el cmdlet New-SPTrustedIdentityTokenIssuer. Esta opción produce efectos secundarios inesperados debido a la forma en que establece la identidad de los usuarios internamente.
A continuación, se debe agregar el certificado pertinente al almacén de certificados de la entidad de certificación raíz de SharePoint. Hay 2 opciones posibles:
- Si el certificado de firma de AD FS lo emite una entidad de certificación (procedimiento recomendado por motivos de seguridad)
La clave pública del certificado del emisor (y todos los intermedios) debe agregarse al almacén: Inicie el Shell de administración de SharePoint y ejecute el siguiente script para agregarlo:
$rootCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\Data\Claims\ADFS Signing issuer.cer")
New-SPTrustedRootAuthority -Name "adfs.contoso.local signing root authority" -Certificate $rootCert
- Si el certificado de firma de ADFS es un certificado autofirmado (no se recomienda por motivos de seguridad)
La clave pública del propio certificado de firma de ADFS debe agregarse al almacén: Inicie el Shell de administración de SharePoint y ejecute el siguiente script para agregarlo:
$rootCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\Data\Claims\ADFS Signing.cer")
New-SPTrustedRootAuthority -Name "adfs.contoso.local signing certificate" -Certificate $rootCert
Configuración de la aplicación web de SharePoint
En este paso configurará una aplicación web en SharePoint para que se federe con la confianza de AD FS, mediante el SPTrustedLoginProvider que se creó anteriormente.
Hay algunas reglas importantes que respetar:
- La zona predeterminada de la aplicación web de SharePoint debe tener habilitada la autenticación de Windows. Esto es necesario para el rastreador de búsqueda.
- La dirección URL de SharePoint que usará la federación de AD FS debe configurarse con HTTPS.
Hay dos configuraciones posibles:
Si crea una nueva aplicación web y usa la autenticación de Windows y AD FS en la zona Predeterminada:
Inicie el Shell de administración de SharePoint y ejecute el siguiente script:
# This script creates a new web application and sets Windows and AD FS authentication on the Default zone # URL of the SharePoint site federated with ADFS $trustedSharePointSiteUrl = "https://spsites.contoso.local/" $applicationPoolManagedAccount = "Contoso\spapppool" $winAp = New-SPAuthenticationProvider -UseWindowsIntegratedAuthentication -DisableKerberos:$true $sptrust = Get-SPTrustedIdentityTokenIssuer "Contoso.local" $trustedAp = New-SPAuthenticationProvider -TrustedIdentityTokenIssuer $sptrust New-SPWebApplication -Name "SharePoint - ADFS on contoso.local" -Port 443 -SecureSocketsLayer -URL $trustedSharePointSiteUrl -ApplicationPool "SharePoint - ADFS on contoso.local" -ApplicationPoolAccount (Get-SPManagedAccount $applicationPoolManagedAccount) -AuthenticationProvider $winAp, $trustedAp
Abra el sitio de Administración central de SharePoint .
En Configuración del sistema, seleccione Configurar asignaciones de acceso alternativas. Se abre el cuadro Colección de asignaciones de acceso alternativo .
Filtre la pantalla con la nueva aplicación web y confirme que ve algo parecido a esto:
Si extiende una aplicación web existente para establecer la autenticación de AD FS en una nueva zona:
Inicie el Shell de administración de SharePoint y ejecute el siguiente script:
# This script extends an existing web application to set AD FS authentication on a new zone # URL of the default zone of the web application $webAppDefaultZoneUrl = "http://spsites/" # URL of the SharePoint site federated with ADFS $trustedSharePointSiteUrl = "https://spsites.contoso.local/" $sptrust = Get-SPTrustedIdentityTokenIssuer "Contoso.local" $ap = New-SPAuthenticationProvider -TrustedIdentityTokenIssuer $sptrust $wa = Get-SPWebApplication $webAppDefaultZoneUrl New-SPWebApplicationExtension -Name "SharePoint - ADFS on contoso.local" -Identity $wa -SecureSocketsLayer -Zone Intranet -Url $trustedSharePointSiteUrl -AuthenticationProvider $ap
Abra el sitio de Administración central de SharePoint .
En Configuración del sistema, seleccione Configurar asignaciones de acceso alternativas. Se abre el cuadro Colección de asignaciones de acceso alternativo .
Filtre la pantalla con la aplicación web que se ha ampliado y confirme que ve algo parecido a esto:
Establecimiento de un certificado HTTPS en IIS
Dado que la dirección URL de SharePoint usa el protocolo HTTPS (https://spsites.contoso.local/
), se debe establecer un certificado en el sitio de Internet Information Services (IIS) correspondiente.
Generación del certificado de sitio
Nota:
Puede omitir este paso si ya ha generado el certificado.
Abra la consola de Windows PowerShell.
Ejecute el siguiente script para generar un certificado autofirmado y agregarlo al almacén MY del equipo:
New-SelfSignedCertificate -DnsName "spsites.contoso.local" -CertStoreLocation "cert:\LocalMachine\My"
Importante
Los certificados autofirmados solo son adecuados para fines de prueba. En entornos de producción, se recomienda encarecidamente usar certificados emitidos por una entidad de certificación en su lugar.
Establecer el certificado
Abra la consola del Administrador de Internet Information Services.
Expanda el servidor en la vista de árbol, expanda Sitios, seleccione SharePoint - ADFS en el sitio contoso.local y seleccione Enlaces.
Seleccione enlace https y, a continuación, seleccione Editar.
En el campo Certificado TLS/SSL, elija certificado spsites.contoso.local y, a continuación, seleccione Aceptar.
Creación de la colección de sitios
En este paso, creará una colección de sitios de equipo con dos administradores: uno como administrador de Windows y otro como administrador federado (AD FS).
Abra el sitio de Administración central de SharePoint .
En Administración de aplicaciones, seleccione Crear colecciones de sitios. Se abre la página Crear colecciones de sitios.
Escriba un título, una dirección URL y seleccione la plantilla Sitio de equipo.
En la sección Administrador de la colección de sitios principal , haga clic en el icono del libro para abrir el cuadro de diálogo selector de personas.
En el cuadro de diálogo selector de personas, escriba la cuenta de administrador de Windows, por ejemplo
yvand
.A la izquierda, filtre la lista haciendo clic en Organizaciones. Debería ver una salida como esta:
Seleccione la cuenta y haga clic en Aceptar.
En la sección Administrador de colecciones de sitios secundarios , haga clic en el icono del libro para abrir el cuadro de diálogo selector de personas.
En el cuadro de diálogo selector de personas, escriba el valor de correo electrónico exacto de la cuenta de administrador de AD FS, por ejemplo
yvand@contoso.local
.A la izquierda, filtre la lista haciendo clic en Contoso.local. Debería ver una salida como esta:
Seleccione la cuenta y haga clic en Aceptar.
Haga clic en Aceptar para crear la colección de sitios.
Una vez creada la colección de sitios, debería poder iniciar sesión en ella mediante la cuenta de administrador de la colección de sitios federada o Windows.
Pasos siguientes
En la autenticación federada, el selector de personas no valida la entrada, lo que puede provocar errores ortográficos o que los usuarios elijan accidentalmente el tipo de notificación incorrecto. Esto se puede solucionar mediante un proveedor de notificaciones personalizado; por ejemplo, LDAPCP.
Importante
LDAPCP no es un producto de Microsoft y no es compatible con el soporte técnico de Microsoft. Para descargar, instalar y configurar LDAPCP en la granja local de SharePoint, consulte el sitio web LDAPCP.
En SharePoint Server Subscription Edition, el selector de personas nativas puede buscar y resolver personas mediante la aplicación de servicio de perfil de usuario para la autenticación federada. Obtenga información sobre cómo configurar el selector de personas para que funcione con la autenticación federada.