Share via


Tutorial: implementación de la autenticación federada entre Microsoft Entra ID y SharePoint local

Descripción del escenario

En este tutorial, configurará la autenticación federada entre Microsoft Entra ID y SharePoint local. El objetivo es permitir que los usuarios inicien sesión en Microsoft Entra ID y usen su identidad para acceder a los sitios locales de SharePoint.

Requisitos previos

Para realizar la configuración, necesita los siguientes recursos:

  • Un inquilino de Microsoft Entra. En caso de no tener ninguna, puede crear una cuenta gratuita.
  • Una granja de servidores de SharePoint 2013, o posterior.

En este artículo se usan los siguientes valores:

  • Nombre de la aplicación empresarial (en Microsoft Entra ID): SharePoint corporate farm
  • Identificador de confianza (en Microsoft Entra ID) / dominio kerberos (en SharePoint):urn:sharepoint:federation
  • loginUrl (a Microsoft Entra ID): https://login.microsoftonline.com/dc38a67a-f981-4e24-ba16-4443ada44484/wsfed
  • Dirección URL del sitio de SharePoint: https://spsites.contoso.local/
  • Dirección URL de respuesta del sitio de SharePoint: https://spsites.contoso.local/_trust/
  • Nombre de configuración de confianza de SharePoint: MicrosoftEntraTrust
  • UserPrincipalName del usuario de prueba de Microsoft Entra: AzureUser1@demo1984.onmicrosoft.com

Configuración de una aplicación empresarial en Microsoft Entra ID

Para configurar la federación en Microsoft Entra ID, se necesita crear una aplicación empresarial dedicada. Su configuración se simplifica mediante la plantilla preconfigurada SharePoint on-premises, que se puede encontrar en la galería de aplicaciones.

Creación de la aplicación empresarial

  1. Inicie sesión en el Centro de administración de Microsoft Entra como Administrador de aplicaciones en la nube.
  2. Vaya a Identidad>Aplicaciones>Aplicaciones empresariales>Nueva aplicación.
  3. En el cuadro de búsqueda, escriba SharePoint local. Seleccione SharePoint local en el panel de resultados.
  4. Especifique un nombre de la aplicación (en este tutorial, es SharePoint corporate farm) y haga clic en Crear para agregar la aplicación.
  5. En la nueva aplicación empresarial, seleccione Propiedades y compruebe el valor de ¿Asignación de usuarios? . En este escenario, establezca su valor en No y haga clic en Guardar.

Configuración de la aplicación empresarial

En esta sección, configurará la autenticación SAML y definirá las notificaciones que se enviarán a SharePoint después de una autenticación correcta.

  1. En la información general de la aplicación empresarial SharePoint corporate farm, seleccione 2. Set up single sign-on (Configurar inicio de sesión único) y elija SAML en el siguiente cuadro de diálogo.

  2. En la página Configuración del inicio de sesión único con SAML, seleccione el icono Editar en el panel Configuración básica de SAML.

  3. En la sección Configuración básica de SAML, siga estos pasos:

    1. En el cuadro Identificador, asegúrese de que este valor exista: urn:sharepoint:federation.

    2. En el cuadro Dirección URL de respuesta, escriba una dirección URL con este patrón: https://spsites.contoso.local/_trust/.

    3. En el cuadro URL de inicio de sesión, escriba una dirección URL con este patrón: https://spsites.contoso.local/.

    4. Seleccione Guardar.

  4. En la sección User Attributes & Claims (Atributos y notificaciones del usuario), elimine los siguientes tipos de notificaciones, que no sirven para nada dado que SharePoint no las usará para conceder permisos:

    • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
    • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname
    • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname
  5. La configuración debería ser ahora similar a la siguiente:

    Basic SAML settings

  6. Copie la información que necesitará más adelante en SharePoint:

    • En la sección Certificado de firma de SAML, haga clic en Descargar para descargar el certificado (Base64) . Esta es la clave pública del certificado de firma que usa Microsoft Entra ID para firmar el token SAML. SharePoint lo necesitará para comprobar la integridad de los tokens SAML entrantes.

    • En la sección Set up SharePoint corporate farm (Configurar SharePoint corporate farm), copie el valor de URL de inicio de sesión en un bloc de notas y reemplace la cadena final /saml2 por /wsfed.

    Importante

    Asegúrese de reemplazar /saml2 por /wsfed para que Microsoft Entra ID emita un token SAML 1.1, como solicita SharePoint.

    • En la sección Set up SharePoint corporate farm (Configurar SharePoint corporate farm), copie el valor de URL de cierre de sesión

Configurar SharePoint para confiar en Microsoft Entra ID

Creación de la confianza en SharePoint

En este paso, creará un elemento SPTrustedLoginProvider para almacenar la configuración que necesita SharePoint para confiar en Microsoft Entra ID. Para ello, se necesita la información de Microsoft Entra ID que copió anteriormente. Inicie el shell de administración de SharePoint y ejecute el siguiente script para crearlo:

# Path to the public key of the Microsoft Entra SAML signing certificate (self-signed), downloaded from the Enterprise application in the Azure portal
$signingCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\Microsoft Entra app\SharePoint corporate farm.cer")
# Unique realm (corresponds to the "Identifier (Entity ID)" in the Microsoft Entra enterprise application)
$realm = "urn:sharepoint:federation"
# Login URL copied from the Microsoft Entra enterprise application. Make sure to replace "saml2" with "wsfed" at the end of the URL:
$loginUrl = "https://login.microsoftonline.com/dc38a67a-f981-4e24-ba16-4443ada44484/wsfed"

# Define the claim types used for the authorization
$userIdentifier = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" -IncomingClaimTypeDisplayName "name" -LocalClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"
$role = New-SPClaimTypeMapping "http://schemas.microsoft.com/ws/2008/06/identity/claims/role" -IncomingClaimTypeDisplayName "Role" -SameAsIncoming

# Let SharePoint trust the Microsoft Entra signing certificate
New-SPTrustedRootAuthority -Name "Microsoft Entra signing certificate" -Certificate $signingCert

# Create a new SPTrustedIdentityTokenIssuer in SharePoint
$trust = New-SPTrustedIdentityTokenIssuer -Name "MicrosoftEntraTrust" -Description "Microsoft Entra ID" -Realm $realm -ImportTrustCertificate $signingCert -ClaimsMappings $userIdentifier, $role -SignInUrl $loginUrl -IdentifierClaim $userIdentifier.InputClaimType

Configuración de la aplicación web de SharePoint

En este paso, configurará una aplicación web en SharePoint para que confíe en la aplicación empresarial de Microsoft Entra creada anteriormente. Hay reglas importantes que es necesario tener en cuenta:

  • La zona predeterminada de la aplicación web de SharePoint debe tener habilitada la autenticación de Windows. Esta opción es obligatoria para el rastreador de búsqueda.
  • La dirección URL de SharePoint que usará la autenticación de Microsoft Entra debe establecerse con HTTPS.
  1. Cree o amplíe la aplicación web. En este artículo se describen dos configuraciones posibles:

    • Si crea una aplicación web que usa tanto la autenticación de Windows como la de Microsoft Entra en la zona predeterminada:

      1. Inicie el shell de administración de SharePoint y ejecute el siguiente script:

        # This script creates a new web application and sets Windows and Microsoft Entra authentication on the Default zone
        # URL of the SharePoint site federated with Microsoft Entra
        $trustedSharePointSiteUrl = "https://spsites.contoso.local/"
        $applicationPoolManagedAccount = "Contoso\spapppool"
        
        $winAp = New-SPAuthenticationProvider -UseWindowsIntegratedAuthentication -DisableKerberos:$true
        $sptrust = Get-SPTrustedIdentityTokenIssuer "MicrosoftEntraTrust"
        $trustedAp = New-SPAuthenticationProvider -TrustedIdentityTokenIssuer $sptrust    
        
        New-SPWebApplication -Name "SharePoint - Microsoft Entra" -Port 443 -SecureSocketsLayer -URL $trustedSharePointSiteUrl -ApplicationPool "SharePoint - Microsoft Entra" -ApplicationPoolAccount (Get-SPManagedAccount $applicationPoolManagedAccount) -AuthenticationProvider $winAp, $trustedAp
        
      2. Abra el sitio Administración central de SharePoint.

      3. En Configuración del sistema, seleccione Configurar asignaciones de acceso alternativas. Se abre el cuadro Colección de asignaciones de acceso alternativas.

      4. Filtre la visualización con la nueva aplicación web y confirme que se ve algo parecido a esto:

        Alternate Access Mappings of web application

    • Si amplía una aplicación web existente para usar la autenticación de Microsoft Entra en una nueva zona:

      1. Inicie el shell de administración de SharePoint y ejecute el siguiente script:

        # This script extends an existing web application to set Microsoft Entra 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 "MicrosoftEntraTrust"
        $ap = New-SPAuthenticationProvider -TrustedIdentityTokenIssuer $sptrust
        $wa = Get-SPWebApplication $webAppDefaultZoneUrl
        
        New-SPWebApplicationExtension -Name "SharePoint - Microsoft Entra" -Identity $wa -SecureSocketsLayer -Zone Internet -Url $trustedSharePointSiteUrl -AuthenticationProvider $ap
        
      2. Abra el sitio Administración central de SharePoint.

      3. En Configuración del sistema, seleccione Configurar asignaciones de acceso alternativas. Se abre el cuadro Colección de asignaciones de acceso alternativas.

      4. Filtre la visualización con la aplicación web que se ha extendido y confirme que se muestra algo parecido a esto:

        Alternate Access Mappings of extended web application

Una vez creada la aplicación web, puede crear una colección de sitios raíz y agregar su cuenta de Windows como administrador de la colección del sitio principal.

  1. Creación de un certificado para el sitio de SharePoint

    Dado que la dirección URL de SharePoint usa el protocolo HTTPS (https://spsites.contoso.local/), debe establecerse un certificado en el sitio de Internet Information Services (IIS) correspondiente. Siga estos pasos para generar un certificado autofirmado:

    Importante

    Los certificados autofirmados son adecuados solo para pruebas. En los entornos de producción, se recomienda encarecidamente que use certificados emitidos por una entidad de certificación.

    1. Abra la consola Windows PowerShell.

    2. 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"
      
  2. Establecimiento del certificado en el sitio de IIS

    1. Abra la consola del administrador de Internet Information Services.
    2. Expanda el servidor en la vista de árbol, expanda Sitios, seleccione el sitio SharePoint: Microsoft Entra ID y elija Enlaces.
    3. Seleccione el enlace HTTPS y después haga clic en Editar.
    4. En el campo Certificado TLS/SSL, elija el certificado que usará (por ejemplo, spsites.contoso.local creado anteriormente) y seleccione Aceptar.

    Nota:

    Si tiene varios servidores front-end web, debe repetir esta operación en cada uno.

Ahora la configuración básica de la confianza entre SharePoint y Microsoft Entra ID ha finalizado. Veamos cómo iniciar sesión en el sitio de SharePoint como usuario de Microsoft Entra.

Inicio de sesión como usuario miembro

Microsoft Entra ID tiene dos tipos de usuarios: usuarios invitados y usuarios miembros. Empecemos con un usuario miembro, que es simplemente un usuario que se aloja en su organización.

Creación de un usuario miembro en Microsoft Entra ID

  1. Inicie sesión en el Centro de administración de Microsoft Entra al menos como Administrador de usuario.
  2. Vaya aIdentidad>Usuarios>Todos los usuarios.
  3. Seleccione Nuevo usuario>Crear nuevo usuario, en la parte superior de la pantalla.
  4. En las propiedades del usuario, siga estos pasos:
    1. En el campo Nombre para mostrar, escriba B.Simon.
    2. En el campo Nombre principal de usuario, escriba username@companydomain.extension. Por ejemplo, B.Simon@contoso.com.
    3. Active la casilla Show password (Mostrar contraseña) y, después, anote el valor que se muestra en el cuadro Contraseña.
    4. Seleccione Revisar + crear.
  5. Seleccione Crear.
  6. Puede compartir el sitio con este usuario y permitirle el acceso al mismo.

Otorgar permisos al usuario de Microsoft Entra en SharePoint

Inicie sesión en la colección de sitios raíz de SharePoint con su cuenta de Windows (administrador de la colección de sitios) y haga clic en Compartir.
En el cuadro de diálogo, debe escribir el valor exacto de userprincipalname, por ejemplo AzureUser1@demo1984.onmicrosoft.com, y tener cuidado de seleccionar el resultado de la notificación de nombre (mueva el mouse sobre un resultado para ver su tipo de notificación).

Importante

Tenga cuidado de escribir el valor exacto del usuario al que quiere invitar y elija el tipo de notificación adecuado de la lista; de lo contrario, el uso compartido no funcionará.

Screenshot of people picker results without EntraCP.

Esta limitación se debe a que SharePoint no valida la entrada del selector de personas, lo que puede resultar confuso y provocar errores ortográficos o que los usuarios elijan accidentalmente el tipo de notificación incorrecto.
Para corregir este escenario, se puede usar una solución de código abierto denominada EntraCP para conectar SharePoint 2019/2016/2013 con Microsoft Entra ID y resolver la entrada en el inquilino de Microsoft Entra. Para obtener más información, consulte EntraCP.

A continuación, se muestra la misma búsqueda con EntraCP configurado: SharePoint devuelve usuarios reales en función de la entrada:

Screenshot of people picker results with EntraCP.

Importante

EntraCP no es un producto de Microsoft y no dispone de soporte técnico por parte del equipo de Soporte técnico de Microsoft. Para descargar, instalar y configurar EntraCP en la granja de servidores de SharePoint local, consulte el sitio web de EntraCP.

El usuario de Microsoft Entra AzureUser1@demo1984.onmicrosoft.com puede usar ahora su identidad para iniciar sesión en el sitio de SharePoint https://spsites.contoso.local/.

Concesión de permisos a un grupo de seguridad

Adición del tipo de notificación de grupo a la aplicación empresarial

  1. En la información general de la aplicación empresarial SharePoint corporate farm, seleccione 2. Set up single sign-on (Configurar inicio de sesión único).

  2. En la sección User Attributes & Claims (Atributos y notificaciones del usuario), siga estos pasos si no hay ninguna notificación de grupo existente:

    1. Seleccione Agregar una notificación de grupo, elija Grupos de seguridad y asegúrese de que Atributo de origen esté establecido en Id. de grupo.
    2. Active Personalizar nombre de la notificación del grupo y, luego, active Emitir grupos como notificaciones de roles y haga clic en Guardar.
    3. La sección User Attributes & Claims (Atributos y notificaciones del usuario) tiene el siguiente aspecto:

    Claims for users and group

Creación de un grupo de seguridad en Microsoft Entra ID

Vamos a crear un grupo de seguridad.

  1. Vaya a Identidad>Grupos.

  2. Seleccione Nuevo grupo.

  3. Rellene los campos Tipo de grupo (Seguridad), Nombre de grupo (por ejemplo, AzureGroup1) y Tipo de pertenencia. Agregue el usuario que creó anteriormente como miembro y seleccione Crear:

    Create a Microsoft Entra security group

Concesión de permisos al grupo de seguridad en SharePoint

Los grupos de seguridad de Microsoft Entra se identifican con su atributo Id, que es un GUID (por ejemplo: E89EF0A3-46CC-45BF-93A4-E078FCEBFC45).
Sin un proveedor de notificaciones personalizado, los usuarios deben escribir el valor exacto (Id) del grupo en el selector de personas y seleccionar el tipo de notificación correspondiente. Esta solución no es fácil de usar ni confiable.
Para evitar esta situación, en este artículo se usa el proveedor de notificaciones de terceros EntraCP para buscar el grupo de una manera fácil en SharePoint:

People picker search Microsoft Entra group

Administración del acceso de usuarios invitados

Existen dos tipos de cuentas de invitado:

  • Cuentas de invitado B2B: esos usuarios se alojan en un inquilino externo de Microsoft Entra
  • Cuentas de invitado de MSA: esos usuarios se alojan en un proveedor de identificación de Microsoft (Hotmail, Outlook) o en un proveedor de cuentas de redes sociales (Google o similar).

De forma predeterminada, Microsoft Entra ID establece el "Identificador de usuario único" y la notificación "nombre" en el atributo user.userprincipalname.
Desafortunadamente, este atributo es ambiguo para las cuentas de invitado, como se muestra en la tabla siguiente:

Atributo de origen establecido en Microsoft Entra ID Propiedad real usada por Microsoft Entra ID para invitados B2B Propiedad real usada por Microsoft Entra ID para invitados MSA Propiedad en la que SharePoint puede confiar para validar la identidad
user.userprincipalname mail, por ejemplo, guest@PARTNERTENANT userprincipalname, por ejemplo, guest_outlook.com#EXT#@TENANT.onmicrosoft.com Ambigua
user.localuserprincipalname userprincipalname, por ejemplo, guest_PARTNERTENANT#EXT#@TENANT.onmicrosoft.com userprincipalname, por ejemplo, guest_outlook.com#EXT#@TENANT.onmicrosoft.com userprincipalname

Como conclusión, para que todas las cuentas de invitado se identifiquen con el mismo atributo, las notificaciones de identificador de la aplicación empresarial deben actualizarse para usar el atributo user.localuserprincipalname en lugar de user.userprincipalname.

Actualización de la aplicación para usar un atributo coherente con todos los usuarios invitados

  1. En la información general de la aplicación empresarial SharePoint corporate farm, seleccione 2. Set up single sign-on (Configurar inicio de sesión único).

  2. En la página Configuración del inicio de sesión único con SAML, seleccione el icono Editar para abrir el cuadro de diálogo User Attributes & Claims (Atributos y notificaciones del usuario).

  3. Ahora, la sección User Attributes & Claims (Atributos y notificaciones del usuario) tiene el siguiente aspecto:

    1. Seleccione Identificador de usuario único (id. de nombre) , cambie su propiedad Atributo de origen por user.localuserprincipalname y haga clic en Guardar.

    2. Seleccione http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name, cambie su propiedad Atributo de origen por user.localuserprincipalname y haga clic en Guardar.

    3. La sección User Attributes & Claims (Atributos y notificaciones del usuario) tiene el siguiente aspecto:

    User Attributes & Claims for Guests

Invitación a los usuarios invitados en SharePoint

Nota:

En esta sección se da por supuesto que se usa el proveedor de notificaciones EntraCP.

En la sección anterior, actualizó la aplicación empresarial para usar un atributo coherente con todas las cuentas de invitado.
Ahora, la configuración de EntraCP debe actualizarse para que refleje ese cambio y usar el atributo userprincipalname en las cuentas de invitado:

  1. Abra el sitio Administración central de SharePoint.
  2. En Seguridad, seleccione EntraCP global configuration (Configuración global de EntraCP).
  3. En la sección User identifier property (Propiedad de identificador de usuario): establezca User identifier for 'Guest' users: (Identificador de usuario para usuarios "invitados":) en UserPrincipalName.
  4. Haga clic en Aceptar.

Screenshot of EntraCP guests accounts configuration.

Ahora puede invitar a cualquier usuario invitado en los sitios de SharePoint.

Configuración de la federación para varias aplicaciones web

La configuración funciona para una sola aplicación web, pero se necesitará configuración adicional si va a usar el mismo proveedor de identidades de confianza con varias aplicaciones web. Por ejemplo, suponga que tiene una aplicación web independiente https://otherwebapp.contoso.local/ y desea habilitar en ella la autenticación de Microsoft Entra. Para ello, configure SharePoint para pasar el parámetro WReply de SAML y agregue las direcciones URL en la aplicación empresarial.

Configuración de SharePoint para pasar el parámetro WReply de SAML

  1. En el servidor de SharePoint, abra el shell de administración de SharePoint 201x y ejecute los siguientes comandos. Use el mismo nombre para el emisor de tokens de identidad de confianza que utilizó anteriormente.
$t = Get-SPTrustedIdentityTokenIssuer "MicrosoftEntraTrust"
$t.UseWReplyParameter = $true
$t.Update()

Adición de las direcciones URL en la aplicación empresarial

  1. Inicie sesión en el Centro de administración de Microsoft Entra como Administrador de aplicaciones en la nube.

  2. Vaya a Identidad>Aplicaciones>Aplicaciones de empresa>Seleccione la aplicación de empresa creada anteriormente y seleccione Inicio de sesión único.

  3. En la página Configuración del inicio de sesión único con SAML, edite la sección Configuración básica de SAML.

  4. En la sección Dirección URL de respuesta (URL del Servicio de consumidor de aserciones), agregue la dirección URL (por ejemplo: https://otherwebapp.contoso.local/) de todas las aplicaciones web adicionales que deben iniciar la sesión de los usuarios con Microsoft Entra ID y haga clic en Guardar.

Specify additional web applications

Configuración de la duración del token de seguridad

De forma predeterminada, Microsoft Entra ID crea un token SAML válido durante 1 hora, que no se puede personalizar en Azure Portal o mediante una directiva de acceso condicional.
Sin embargo, es posible crear una directiva de vigencia de tokens personalizada y asignarla a la aplicación empresarial que creó para SharePoint Server.
Puede ejecutar la siguiente secuencia de comandos para hacerlo:

Install-Module Microsoft.Graph
Connect-MgGraph -Scopes "Policy.ReadWrite.ApplicationConfiguration","Policy.Read.All","Application.ReadWrite.All"

$appDisplayName = "SharePoint corporate farm"
$sp = Get-MgServicePrincipal -Search DisplayName:"$appDisplayName" -ConsistencyLevel eventual

$oldPolicy = Get-MgServicePrincipalTokenLifetimePolicy -ServicePrincipalId $sp.Id
if ($null -ne $oldPolicy) {
	# There can be only 1 TokenLifetimePolicy associated to the service principal (or 0, as by default)
    Remove-MgServicePrincipalAppManagementPolicy -AppManagementPolicyId $oldPolicy.Id -ServicePrincipalId $sp.Id
}

# Get / create a custom token lifetime policy
$policyDisplayName = "WebPolicyScenario"
$policy = Get-MgPolicyTokenLifetimePolicy -Filter "DisplayName eq '$policyDisplayName'"
if ($null -eq $policy) {
	$params = @{
		Definition = @('{"TokenLifetimePolicy":{"Version":1,"AccessTokenLifetime":"4:00:00"}}') 
		DisplayName = $policyDisplayName
		IsOrganizationDefault = $false
	}
	$policy = New-MgPolicyTokenLifetimePolicy -BodyParameter $params
}

# Assign the token lifetime policy to an app
$body = @{
	"@odata.id" = "https://graph.microsoft.com/v1.0/policies/tokenLifetimePolicies/$($policy.Id)"
}
Invoke-GraphRequest -Uri ('https://graph.microsoft.com/v1.0/servicePrincipals/{0}/tokenLifetimePolicies/$ref' -f $sp.Id) -Method POST -Body $body