Configurar un proveedor SAML 2.0 con AD FS
Active Directory Federation Services (AD FS) es uno de los proveedores de identidad SAML 2.0 que puede usar para autenticar visitantes para su sitio de Power Pages. Puede utilizar cualquier proveedor que cumpla las especificaciones de SAML 2.0.
Este artículo describe los pasos siguientes:
- Configurar AD FS en Power Pages
- Cree un usuario de confianza de AD FS
- Terminar de configurar el proveedor
Importante
Los pasos para la configuración de AD FS podrían variar según la versión de su servidor de AD FS.
Configurar AD FS en Power Pages
Establezca AD FS como proveedor de identidad para el sitio.
En el sitio de Power Pages, seleccione Seguridad>Proveedores de identidades.
Si no aparecen proveedores de identidades, asegúrese de que Inicio de sesión externo está establecido en Activado en la configuración general de autenticación de su sitio.
Seleccione + Nuevo proveedor.
En Seleccionar proveedor de inicio de sesión seleccione Otro.
En Protocolo, seleccione SAML 2.0.
Introduzca un nombre para el proveedor.
El nombre del proveedor es el texto en el botón que los usuarios ven cuando seleccionan su proveedor de identidad en la página de inicio de sesión.
Seleccione Siguiente.
En URL de respuesta, seleccione Copiar.
No cierre la pestaña Power Pages del navegador. Pronto volverá a ella.
Cree un usuario de confianza de AD FS
También puede usar una secuencia de comandos de PowerShell para realizar estos pasos.
En el Administrador del servidor, seleccione Herramientas y luego seleccione Administración de AD FS.
Expanda Servicio.
En el panel derecho, seleccione Agregar descripción de notificación.
Introduzca los siguientes valores:
Nombre para mostrar: Identificador persistente
Identificador de notificación: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
Seleccione ambas opciones de Publicar esta descripción de reclamo en los metadatos de la federación… .
Seleccione Aceptar.
Seleccione Relaciones de confianza>Usuarios de confianza.
Seleccione Agregar usuario de confianza.
Seleccione Iniciar.
Seleccione Especifique datos del usuario de confianza manualmente y luego seleccione Siguiente.
Escriba un nombre, por ejemplo, https://portal.contoso.com/.
Seleccione Siguiente.
Seleccione Perfil de AD FS 2.0 y luego seleccione Siguiente.
En la página Configurar certificado, seleccione Siguiente.
Seleccione Habilitar soporte para el protocolo SAML 2.0 WebSSO.
En URL del servicio SSO de SAML 2.0 de usuario de confianza, ingrese la URL de respuesta que copió. Nota: AD FS requiere que el sitio web se ejecute en HTTPS, no HTTP.
Seleccione Siguiente.
En la página Configurar identificadores, ingrese la URL de su sitio y luego seleccione Agregar.
Puede agregar más identidades para cada sitio web del usuario de confianza adicional si es necesario. Los usuarios pueden autenticarse usando las identidades disponibles.
Seleccione Siguiente.
En la página ¿Configurar la autenticación multifactor ahora?, seleccione No deseo configurar los ajustes de autenticación multifactor para esta confianza de usuario autenticado en esta vez.
En la página Choose Issuance Authorization Rules (Elegir reglas de autorización de emisión), haga clic en Permitir a todos los usuarios el acceso a este usuario de confianza y, a continuación, haga clic en Siguiente.
Revise la configuración de confianza y luego seleccione Siguiente.
Seleccione Cerrar.
En Editar reglas de notificación, seleccione una de las siguientes pestañas, según la confianza que esté editando y en qué conjunto de reglas desea crear la regla:
- Reglas de transformación de aceptación
- Reglas de transformación de emisión
- Reglas de autorización de emisión
- Reglas de autorización de delegación
Seleccione Agregar regla.
En la lista de plantillas de regla de notificación, seleccione Transformar una notificación entrante y haga clic en Siguiente.
Introduzca o seleccione los siguientes valores:
Nombre de regla de notificación: Transformar nombre de cuenta de Windows en ID de nombre
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
Seleccione Paso a través de todos los valores de notificaciones.
Seleccione Finalizar y luego seleccione Aceptar.
Terminar de configurar el proveedor
Después de configurar la relación de confianza para usuario autenticado de AD FS:
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 sitio web del proveedor de servicios responda correctamente a la solicitud SAML del proveedor de identidad, debe codificar el parámetro RelayState
.
El valor de cadena básico que se codifica 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 a la que quiere ir en el sitio web del proveedor de servicio. Puede especificar la ruta a cualquier página válida en el sitio web. El valor de cadena se codifica y se incluye en una cadena contenedora del formato RPID=<URL encoded RPID>&RelayState=<URL encoded RelayState>
. 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=<URL> encoded RPID/RelayState>
.
Por ejemplo, dada la ruta del proveedor de servicios /content/sub-content/
y el id. de usuario de confianza https://portal.contoso.com/
, siga estos pasos para generar la dirección URL:
Codifique el valor
ReturnUrl=/content/sub-content/
para obtenerReturnUrl%3D%2Fcontent%2Fsub-content%2F
Codifique el valor
https://portal.contoso.com/
para obtenerhttps%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 obtenerRPID%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-IdPInitiatedUrl.ps1
.
<#
.SYNOPSIS
Constructs an IdP-initiated SSO URL to access a website page on the service provider.
.PARAMETER path
The path to the website 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
En lugar de agregar un usuario de confianza en AD FS manualmente, también se puede ejecutar el siguiente script de PowerShell en el servidor de AD FS. Guarde el script en un archivo llamado Add-AdxPortalRelyingPartyTrustForSaml.ps1
. Después de que se ejecute la secuencia de comandos, continúe para configurar los ajustes del sitio en Power Pages.
<#
.SYNOPSIS
Adds a SAML 2.0 relying party trust entry for a website.
.PARAMETER domain
The domain name of the website.
.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 website relying party trust
[!INCLUDE[cc-pages-ga-banner](../../../includes/cc-pages-ga-banner.md)]
Add-CrmRelyingPartyTrust $domain
Consulte también
Configurar un proveedor SAML 2.0
Configurar un proveedor SAML 2.0 con Microsoft Entra ID
Preguntas frecuentes sobre SAML 2.0