Configurar un proveedor SAML 2.0 para portales con AD FS

Nota

A partir del 12 de octubre de 2022, los portales de Power Apps son Power Pages. Más información: Microsoft Power Pages ya está disponible para el público en general (blog)
Pronto migraremos y fusionaremos la documentación de los portales de Power Apps con la documentación de Power Pages.

Importante

Los pasos para la configuración de los Servicios de federación de Active Directory (AD FS) pueden variar según la versión del servidor de AD FS.

Cree un usuario de confianza de AD FS

Nota

Consulte Configurar AD FS mediante PowerShell para obtener información sobre cómo realizar estos pasos en un script de PowerShell.

  1. Utilizando la herramienta de administración de AD FS, vaya a Servicio > Descripciones de notificación.

    1. Seleccione Agregar descripción de notificación.

    2. Especificar la notificación:

      • Nombre para mostrar:Identificador persistente

      • Identificador de notificación:urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

      • Habilitar la casilla para: Publicar esta descripción de notificación en metadatos de federación como tipo de notificación que este servicio de federación puede aceptar

      • Habilitar casilla para: Publicar esta descripción de notificación en metadatos de federación como tipo de notificación que este servicio de federación puede enviar

    3. Seleccione Aceptar.

  2. Utilizando la herramienta de administración de AD FS, seleccione Relaciones de confianza >Usuarios de confianza.

    1. Seleccione Agregar usuario de confianza.

    2. Bienvenida: Seleccione Inicio.

    3. Seleccionar origen de datos: Seleccione Especifique datos del usuario de confianza manualmente y luego seleccione Siguiente.

    4. Especificar nombre para mostrar: Escriba un nombre y luego seleccione Siguiente. Ejemplo: https://portal.contoso.com/

    5. Elegir perfil: Seleccione Perfil de AD FS 2.0 y luego seleccione Siguiente.

    6. Configurar certificado: Seleccione Siguiente.

    7. Configurar dirección URL: Seleccione la casilla Habilitar compatibilidad para el protocolo SAML 2.0 WebSSO. Dirección URL de servicio SAML 2.0 SSO: especifique https://portal.contoso.com/signin-saml2
      Tenga en cuenta que AD FS requiere que el portal se ejecute en HTTPS.

      Nota

      El extremo resultante tiene los siguientes valores:

    8. Configuración de identidades: especifique https://portal.contoso.com/, seleccione Agregary, a continuación seleccione Siguiente. Si corresponde, pueden agregarse más identidades para cada portal del usuario de confianza adicional. Los usuarios pueden autenticarse en cualquiera o todas las identidades disponibles.

    9. Elegir reglas de autorización de emisión: Seleccione Permitir a todos los usuarios el acceso a este usuario de confianza y luego seleccione Siguiente.

    10. Listo para agregar confianza: Seleccione Siguiente.

    11. Seleccione Cerrar.

  3. Agregue la notificación Id. de nombre al usuario de confianza:

    Transforme el nombre de cuenta de Windows a la solicitud Id. de nombre (Transformar una notificación entrante):

    • Tipo de notificación entrante:Nombre de cuenta de Windows

    • Tipo de notificación saliente: Id. de nombre

    • Formato de Id. de nombre saliente: Identificador persistente

    • Paso a través de todos los valores de notificaciones

Configurar el proveedor SAML 2.0

Después de configurar la confianza de usuario de confianza de AD FS, puede seguir los pasos de Configurar un proveedor SAML 2.0 para portales.

Inicio de sesión iniciado por el proveedor de identidad

AD FS admite el perfil de inicio de sesión único (SSO) iniciado por el proveedor de identidades de la especificación SAML 2.0. Para que el portal (proveedor de servicios) responda correctamente a la solicitud SAML iniciada por el proveedor de identidades, el parámetro RelayState se debe codificar correctamente.

El valor de cadena básico que se codificará en el parámetro SAML RelayState debe estar en formato ReturnUrl=/content/sub-content/, donde /content/sub-content/ es la ruta a la página web a la que quiere ir en el portal (proveedor de servicio). La ruta se puede reemplazar por cualquier página web válida en el portal. El valor de cadena se codifica y se incluye en una cadena contenedora del formato RPID=&lt;URL encoded RPID&gt;&RelayState=&lt;URL encoded RelayState&gt;. Esta cadena completa se codifica otra vez más y se agrega a otro contenedor del formato <https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=&lt;URL> encoded RPID/RelayState&gt;.

Por ejemplo, dada la ruta del proveedor de servicios /content/sub-content/ y el id. de usuario de confianza https://portal.contoso.com/, genere la dirección URL con los siguientes pasos:

  • Codifique el valor ReturnUrl=/content/sub-content/ para obtener ReturnUrl%3D%2Fcontent%2Fsub-content%2F

  • Codifique el valor https://portal.contoso.com/ para obtener https%3A%2F%2Fportal.contoso.com%2F

  • Codifique el valor RPID=https%3A%2F%2Fportal.contoso.com%2F&RelayState=ReturnUrl%3D%2Fcontent%2Fsub-content%2F para obtener RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F

  • Anteponga la ruta SSO iniciada por proveedor de identidades de AD FS para obtener la dirección URL final https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F

Puede usar el siguiente script de PowerShell para construir la URL. Guarde el script en un archivo llamado Get-IdPInitiationUrl.ps1.

<#

.SYNOPSIS 

Constructs an IdP-initiated SSO URL to access a portal page on the service provider.

.PARAMETER path

The path to the portal page.

.PARAMETER rpid

The relying party identifier.

.PARAMETER adfsPath

The AD FS IdP initiated SSO page.

.EXAMPLE

PS C:\\> .\\Get-IdPInitiatedUrl.ps1 -path "/content/sub-content/" -rpid "https://portal.contoso.com/" -adfsPath "https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx"

#>

param

(

[parameter(mandatory=$true,position=0)]

$path,

[parameter(mandatory=$true,position=1)]

$rpid,

[parameter(position=2)]

$adfsPath = https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx

)

$state = ReturnUrl=$path

$encodedPath = [uri]::EscapeDataString($state)

$encodedRpid = [uri]::EscapeDataString($rpid)

$encodedPathRpid = [uri]::EscapeDataString("RPID=$encodedRpid&RelayState=$encodedPath")

$idpInitiatedUrl = {0}?RelayState={1} -f $adfsPath, $encodedPathRpid

Write-Output $idpInitiatedUrl

Configurar AD FS mediante PowerShell

El proceso para agregar un usuario de confianza en AD FS también se puede realizar ejecutando el siguiente script de PowerShell en el servidor de AD FS. Guarde el script en un archivo llamado Add-AdxPortalRelyingPartyTrustForSaml.ps1. Después de ejecutar el script, continúe con la configuración del sitio del portal.

<# 

.SYNOPSIS

Adds a SAML 2.0 relying party trust entry for a website.

.PARAMETER domain

The domain name of the portal.

.EXAMPLE

PS C:\\> .\\Add-AdxPortalRelyingPartyTrustForSaml.ps1 -domain portal.contoso.com

#>

param

(

[parameter(Mandatory=$true,Position=0)]

$domain,

[parameter(Position=1)]

$callbackPath = /signin-saml2

)

$VerbosePreference = Continue

$ErrorActionPreference = Stop

Import-Module adfs

Function Add-CrmRelyingPartyTrust

{

param (

[parameter(Mandatory=$true,Position=0)]

$name

)

$identifier = https://{0}/ -f $name

$samlEndpoint = New-ADFSSamlEndpoint -Binding POST -Protocol SAMLAssertionConsumer -Uri (https://{0}{1} -f $name, $callbackPath)

$identityProviderValue = Get-ADFSProperties | % { $_.Identifier.AbsoluteUri }

$issuanceTransformRules = @'

@RuleTemplate = MapClaims

@RuleName = Transform [!INCLUDE[pn-ms-windows-short](../../../includes/pn-ms-windows-short.md)] Account Name to Name ID claim

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]

=> issue(Type = "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType, Properties["https://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent");

@RuleTemplate = LdapClaims

@RuleName = Send LDAP Claims

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]

=> issue(store = "[!INCLUDE[pn-active-directory](../../../includes/pn-active-directory.md)]", types = ("https://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname", "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = ";givenName,sn,mail;{{0}}", param = c.Value);

'@ -f $identityProviderValue

$issuanceAuthorizationRules = @'

@RuleTemplate = AllowAllAuthzRule

=> issue(Type = https://schemas.microsoft.com/authorization/claims/permit, Value = true);

'@

Add-ADFSRelyingPartyTrust -Name $name -Identifier $identifier -SamlEndpoint $samlEndpoint -IssuanceTransformRules $issuanceTransformRules -IssuanceAuthorizationRules $issuanceAuthorizationRules

}

# add the 'Identity Provider' claim description if it is missing


[!INCLUDE[cc-pages-ga-banner](../../../includes/cc-pages-ga-banner.md)]

if (-not (Get-ADFSClaimDescription | ? { $_.Name -eq Persistent Identifier })) {

Add-ADFSClaimDescription -name "Persistent Identifier" -ClaimType "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" -IsOffered:$true -IsAccepted:$true

}

# add the portal relying party trust


[!INCLUDE[cc-pages-ga-banner](../../../includes/cc-pages-ga-banner.md)]

Add-CrmRelyingPartyTrust $domain

Configurar un proveedor de SAML 2.0

Después de configurar la confianza de usuario de confianza de AD FS, puede seguir los pasos de Configurar un proveedor SAML 2.0 para portales.

Consulte también

Configurar un proveedor SAML 2.0 para portales con Azure AD
Preguntas frecuentes sobre el uso de SAML 2.0 en portales
Configurar un proveedor SAML 2.0 para portales

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).