Configurar la autenticación OIDC en SharePoint Server con Servicios de federación de Active Directory (AD FS)
SE APLICA A:2013 2016 2019 Subscription Edition SharePoint en Microsoft 365
Requisitos previos
Al configurar SharePoint Server con Servicios de federación de Active Directory (AD FS) mediante la autenticación de OpenID Connect (OIDC), necesita los siguientes recursos para realizar la configuración:
- Una granja de servidores de SharePoint Server Subscription Edition.
- AD FS en Windows Server 2016 o posterior, ya creado, con la clave pública del certificado de firma de AD FS exportado en un
.cer
archivo.
En este artículo se usan los siguientes valores de ejemplo para la configuración de AD FS OIDC:
Valor | Vínculo |
---|---|
Dirección URL del sitio de SharePoint | https://spsites.contoso.local/ |
DIRECCIÓN URL del sitio de AD FS | https://adfs.contoso.local/adfs/ |
Punto de conexión de autenticación de AD FS | https://adfs.contoso.local/adfs/oauth2/authorize |
RegisteredIssuerName URL | https://adfs.contoso.local/adfs/ |
AD FS SignoutURL | https://adfs.contoso.local/adfs/oauth2/logout |
Tipo de notificación de identidad | http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress |
Administrador de la colección de sitios de Windows | contoso\yvand |
Valor de correo electrónico del administrador de colección de sitios federado (AD FS) | yvand@contoso.local |
Paso 1: Configuración del proveedor de identidades
Siga estos pasos para configurar OIDC con AD FS:
En Administración de AD FS, haga clic con el botón derecho en Grupos de aplicaciones y seleccione Agregar grupo de aplicaciones.
Vaya a la página principal , escriba ADFSSSO en el campo Nombre y, en Aplicaciones cliente-servidor, seleccione el explorador web que accede a una plantilla de aplicación web . Después, seleccione Siguiente.
Vaya a la página Aplicación nativa y copie el valor de Identificador de cliente . Se usará más adelante como valor para
DefaultClientIdentifier
el parámetro durante la configuración de SharePoint.En el campo Dirección URL de redireccionamiento , escriba
https://spsites.contoso.local/
y seleccione Agregar. Después, seleccione Siguiente.Vaya a la página Resumen y seleccione Siguiente.
Vaya a la página Completar y seleccione Cerrar.
Exportación del certificado de firma de tokens desde AD FS. Este certificado de firma de tokens se usará en la instalación de SharePoint. En las imágenes siguientes se muestra cómo exportar el certificado de firma de tokens desde AD FS:
Asegúrese de que el identificador de notificación necesario está incluido en desde
id_token
AD FS. Consideremos el correo electrónico como ejemplo:Se supone que AD FS ha configurado la regla que lee la notificación de identificador del almacén de atributos, como AD. Siga estos pasos para crear la regla de transformación de emisión para esta aplicación web específica que creamos anteriormente en AD FS:
Abra la aplicación web que creó y vaya a la pestaña Regla de transformación de problemas .
Seleccione Agregar regla y seleccione Enviar atributos LDAP como notificaciones en la lista de opciones.
Asigne un nombre a la regla de notificación como AD y seleccione Active Directory en el menú desplegable Almacén de atributos . Cree dos asignaciones mediante los cuadros desplegables, como se muestra:
Atributo Valor Direcciones de correo electrónico Dirección de correo electrónico Token-Groups: calificado por nombre de dominio Role Seleccione Finalizar para cerrar el Asistente para reglas y seleccione Aceptar para cerrar las propiedades de la aplicación web. Seleccione Aceptar una vez más para completar la regla.
Si va a establecer OIDC con SharePoint Server, la notificación nbf debe configurarse en el lado del servidor de AD FS en la aplicación web que creó. Si la notificación nbf no existe en esta aplicación web, realice los pasos siguientes para crearla:
Abra la aplicación web que creó y vaya a la pestaña Regla de transformación de problemas .
Seleccione Agregar regla y, a continuación, aplicar. En el Asistente para agregar reglas de notificación de transformación , seleccione Enviar notificaciones mediante una regla personalizada en las opciones de plantilla Regla de notificación .
Seleccione Siguiente y escriba la siguiente cadena en el campo Regla personalizada :
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"] => issue(Type = "nbf", Value = "0");
Seleccione Finalizar.
Paso 2: Cambio de las propiedades de la granja de servidores de SharePoint
En este paso, debe modificar las propiedades de la granja de servidores de SharePoint Server en función de la versión de la granja de servidores de SharePoint Server.
- Para obtener más información sobre cómo configurar las propiedades de la granja de servidores de SharePoint para SharePoint Server Subscription Edition versión 24H1, vea Configurar SPSE versión 24H1 o una versión posterior.
- Para obtener más información sobre cómo configurar las propiedades de la granja de servidores de SharePoint para la versión de SharePoint Server Subscription Edition anterior a la 24H1, vea Configurar SPSE antes de la versión 24H1.
Configuración de La edición de suscripción de SharePoint Server versión 24H1 o versiones posteriores con preferencia de características de versión preliminar
A partir de la versión 24H1 de SharePoint Server Subscription Edition (marzo de 2024), si la granja de SharePoint está configurada para la preferencia de características de versión temprana, puede configurar las propiedades de la granja de servidores de SharePoint Server mediante el empleo de Administración de certificados de SharePoint para administrar el certificado de cookie de nonce. El certificado de cookie de nonce forma parte de la infraestructura para garantizar que los tokens de autenticación de OIDC sean seguros. Ejecute el siguiente script de PowerShell para configurar:
Importante
Para usar este script, la granja de servidores de SharePoint debe establecerse en Versión preliminar, como se indicó anteriormente. Si no es así, el script se completará sin error, pero la llamada a $farm. UpdateNonceCertificate() no hará nada. Si no desea configurar la granja para la versión preliminar, debe usar los pasos Configurar SPSE antes de la versión 24H1 en su lugar.
Nota:
Inicie el Shell de administración de SharePoint como administrador de la granja de servidores para ejecutar el siguiente script. Lea detenidamente las instrucciones mencionadas en el siguiente script de PowerShell. Tendrá que escribir sus propios valores específicos del entorno en determinados lugares.
# Set up farm properties to work with OIDC
# Create the Nonce certificate
$cert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -Provider 'Microsoft Enhanced RSA and AES Cryptographic Provider' -Subject "CN=SharePoint Cookie Cert"
# Import certificate to Certificate Management
$certPath = "<path and file name to save the exported cert. ex: c:\certs\nonce.pfx>"
$certPassword = ConvertTo-SecureString -String "<password>" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath $certPath -Password $certPassword
$nonceCert = Import-SPCertificate -Path $certPath -Password $certPassword -Store "EndEntity" -Exportable:$true
# Update farm property
$farm = Get-SPFarm
$farm.UpdateNonceCertificate($nonceCert,$true)
Configuración de La edición de suscripción de SharePoint Server anterior a la versión 24H1
# Set up farm properties to work with OIDC
$cert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -Provider 'Microsoft Enhanced RSA and AES Cryptographic Provider' -Subject "CN=SharePoint Cookie Cert"
$rsaCert = [System.Security.Cryptography.X509Certificates.RSACertificateExtensions]::GetRSAPrivateKey($cert)
$fileName = $rsaCert.key.UniqueName
# If you have multiple SharePoint servers in the farm, you need to export the certificate by Export-PfxCertificate and import the certificate to all other SharePoint servers in the farm by Import-PfxCertificate.
# After the certificate is successfully imported to SharePoint Server, we will need to grant access permission to the certificate's private key.
$path = "$env:ALLUSERSPROFILE\Microsoft\Crypto\RSA\MachineKeys\$fileName"
$permissions = Get-Acl -Path $path
# Replace the <web application pool account> with the real application pool account of your web application
$access_rule = New-Object System.Security.AccessControl.FileSystemAccessRule(<Web application pool account>, 'Read', 'None', 'None', 'Allow')
$permissions.AddAccessRule($access_rule)
Set-Acl -Path $path -AclObject $permissions
# Update farm properties
$farm = Get-SPFarm
$farm.Properties['SP-NonceCookieCertificateThumbprint']=$cert.Thumbprint
$farm.Properties['SP-NonceCookieHMACSecretKey']='seed'
$farm.Update()
Paso 3: Configurar SharePoint para confiar en los proveedores de identidades
En este paso, creará un SPTrustedTokenIssuer
que almacenará la configuración que SharePoint necesita para confiar en AD FS como proveedor de OIDC. Inicie el Shell de administración de SharePoint como administrador de la granja de servidores y ejecute el siguiente script para crearlo:
Nota:
Lea detenidamente las instrucciones mencionadas en el siguiente script de PowerShell. Tendrá que introducir valores específicos del entorno en varios lugares.
# Define claim types
$email = New-SPClaimTypeMapping "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" -IncomingClaimTypeDisplayName "EmailAddress" -SameAsIncoming
# Public key of the AD FS signing certificate
$signingCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\Data\Claims\ADFS Signing.cer")
# Set the AD FS URL where users are redirected to authenticate
$authendpointurl = "https://adfs.contoso.local/adfs/oauth2/authorize"
$registeredissuernameurl = "https://adfs.contoso.local/adfs"
$signouturl = "https://adfs.contoso.local/adfs/oauth2/logout"
# Replace <Client Identifier> with the value you saved in step #3 of AD FS Setup section
$clientIdentifier = "<Your Client Identifier>"
# Create a new SPTrustedIdentityTokenIssuer in SharePoint
New-SPTrustedIdentityTokenIssuer -Name "Contoso.local" -Description "Contoso.local" -ImportTrustCertificate $signingCert -ClaimsMappings $email -IdentifierClaim $email.InputClaimType -RegisteredIssuerName $registeredissuernameurl -AuthorizationEndPointUri $authendpointurl -SignOutUrl $signouturl -DefaultClientIdentifier $clientIdentifier
El New-SPTrustedIdentityTokenIssuer
cmdlet de PowerShell se extiende para admitir OIDC mediante los parámetros siguientes:
Parámetro | Descripción |
---|---|
Name | Proporciona un nombre al nuevo emisor de tokens. |
Descripción | Proporciona una descripción al nuevo emisor de tokens. |
ImportTrustCertificate | Importa una lista de certificados X509, que se usarán para validar id_token desde el identificador OIDC. Si el IDP de OIDC usa más de un certificado para firmar digitalmente , id_token importe estos certificados y SharePoint lo validará id_token haciendo coincidir la firma digital generada mediante estos certificados. |
ClaimsMappings | Objeto SPClaimTypeMapping que se usará para identificar qué notificación de id_token se considerará identificador en SharePoint. |
IdentifierClaim | Especifica el tipo de identificador. |
RegisteredIssuerName | Especifica el identificador del emisor, que emite .id_token Se usará para validar .id_token |
AuthorizationEndPointUrl | Especifica el punto de conexión de autorización del proveedor de identidades OIDC. |
SignoutUrl | Especifica el punto de conexión de cierre de sesión del proveedor de identidades OIDC. |
DefaultClientIdentifier | Especifica el client_id de servidor de SharePoint, asignado por el proveedor de identidades OID. Esto se validará con la notificación aud en id_token . |
ResponseTypesSupported | Especifica el tipo de respuesta de IDP, que este emisor de tokens puede aceptar. Puede aceptar dos cadenas: id_token y code id_token . Si no se proporciona este parámetro, se usará code id_token como valor predeterminado. |
Importante
El certificado pertinente debe agregarse al almacén de certificados de la entidad de certificación raíz de SharePoint y hay dos opciones posibles para ello:
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 agregar el certificado:
$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 AD FS es un certificado autofirmado (no se recomienda por motivos de seguridad).
La clave pública del certificado de firma de AD FS debe agregarse al almacén. Inicie el Shell de administración de SharePoint y ejecute el siguiente script para agregar el certificado:
$rootCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\Data\Claims\ADFS Signing.cer") New-SPTrustedRootAuthority -Name "adfs.contoso.local signing certificate" -Certificate $rootCert
Paso 4: Configuración de una aplicación web de SharePoint
En este paso, configurará una aplicación web en SharePoint para usar la autenticación OIDC de AD FS mediante el SPTrustedIdentityTokenIssuer
que se creó en el paso anterior.
Importante
- 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 OIDC de AD FS debe configurarse con HTTPS.
Puede completar esta configuración mediante:
Crear una nueva aplicación web y usar la autenticación OIDC de Windows y AD FS en la zona Predeterminada. Para crear una nueva aplicación web, haga lo siguiente:
Inicie el Shell de administración de SharePoint y ejecute el siguiente script para crear un nuevo
SPAuthenticationProvider
:# This script creates a trusted authentication provider for OIDC $sptrust = Get-SPTrustedIdentityTokenIssuer "contoso.local" $trustedAp = New-SPAuthenticationProvider -TrustedIdentityTokenIssuer $sptrust
Siga Creación de una aplicación web en SharePoint Server para crear una nueva aplicación web que habilite HTTPS/SSL denominado SharePoint - OIDC en contoso.local.
Abra el sitio de Administración central de SharePoint.
Abra la aplicación web que creó, elija "Proveedores de autenticación" en la cinta de opciones, haga clic en el vínculo de la zona "Predeterminado" y elija contoso.local como Proveedor de identidades de confianza.
Vaya a Configuración del> sistemaConfigurar asignaciones de acceso alternativasColección de asignaciones> de acceso alternativas.
Filtre la presentación con la nueva aplicación web y confirme que ve la siguiente información:
Ampliación de una aplicación web existente para establecer la autenticación OIDC de AD FS en una nueva zona. Para ampliar una aplicación web existente, haga lo siguiente:
Inicie el Shell de administración de SharePoint y ejecute PowerShell para ampliar la aplicación web:
Ejemplo:
# Get the trusted provider $sptrust = Get-SPTrustedIdentityTokenIssuer "Contoso.local" $ap = New-SPAuthenticationProvider -TrustedIdentityTokenIssuer $sptrust # Get the web app $wa = Get-SPWebApplication http://spsites # Extend the web app to the "Intranet" zone using trusted provider auth and a SharePoint managed certificate called "SharePoint OIDC Site" New-SPWebApplicationExtension -Identity $wa -Name "spsites" -port 443 -HostHeader 'spsites.contoso.local'-AuthenticationProvider $ap -SecureSocketsLayer -UseServerNameIndication -Certificate 'SharePoint OIDC Site' -Zone 'Intranet' -URL 'https://spsites.contoso.local'
Vaya a Configuración del> sistemaConfigurar asignaciones de acceso alternativasColección de asignaciones> de acceso alternativas.
Filtre la pantalla con la aplicación web que se ha ampliado y confirme que ve la siguiente información:
Paso 5: Asegúrese de que la aplicación web está configurada con un certificado SSL
Puesto que la autenticación de OpenID Connect 1.0 solo puede funcionar con el protocolo HTTPS, se debe establecer un certificado en la aplicación web correspondiente. Si aún no lo ha hecho, siga estos pasos para establecer un certificado:
Genere el certificado de sitio:
Nota:
Puede omitir este paso si ya ha generado el certificado.
Abra la consola de PowerShell de SharePoint.
Ejecute el siguiente script para generar un certificado autofirmado y agregarlo a la granja de servidores de SharePoint:
New-SPCertificate -FriendlyName "Contoso SharePoint (2021)" -KeySize 2048 -CommonName spsites.contoso.local -AlternativeNames extranet.contoso.local, onedrive.contoso.local -OrganizationalUnit "Contoso IT Department" -Organization "Contoso" -Locality "Redmond" -State "Washington" -Country "US" -Exportable -HashAlgorithm SHA256 -Path "\\server\fileshare\Contoso SharePoint 2021 Certificate Signing Request.txt" Move-SPCertificate -Identity "Contoso SharePoint (2021)" -NewStore EndEntity
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.
Establezca el certificado:
Puede usar el siguiente cmdlet de PowerShell para asignar el certificado a la aplicación web:
Set-SPWebApplication -Identity https://spsites.contoso.local -Zone Default -SecureSocketsLayer -Certificate "Contoso SharePoint (2021)"
Paso 6: 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.
Vaya a Administración de>aplicaciones 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 colección de sitios principal , seleccione 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.
Para filtrar la lista de la izquierda, seleccione Organizaciones. A continuación se muestra una salida de ejemplo:
Vaya a la cuenta y seleccione Aceptar.
En la sección Administrador de colecciones de sitios secundarios , seleccione 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.
Para filtrar la lista de la izquierda, seleccione Contoso.local. A continuación se muestra una salida de ejemplo:
Vaya a la cuenta y seleccione 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 con la cuenta de administrador de colecciones de sitios de Windows o federada (AD FS OIDC).
Paso 7: Configurar el selector de personas
En la autenticación OIDC, el selector de personas no valida la entrada, lo que puede provocar errores ortográficos o que los usuarios seleccionen accidentalmente el tipo de notificación incorrecto. Esto se puede solucionar mediante un proveedor de notificaciones personalizado o mediante el nuevo proveedor de notificaciones respaldado por UPA incluido en SharePoint Server Subscription Edition. Para configurar un proveedor de notificaciones respaldado por UPA, consulte Selector de personas mejorado para la autenticación moderna.