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.
Utilizando la herramienta de administración de AD FS, vaya a Servicio > Descripciones de notificación.
Seleccione Agregar descripción de notificación.
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
Seleccione Aceptar.
Utilizando la herramienta de administración de AD FS, seleccione Relaciones de confianza >Usuarios de confianza.
Seleccione Agregar usuario de confianza.
Bienvenida: Seleccione Inicio.
Seleccionar origen de datos: Seleccione Especifique datos del usuario de confianza manualmente y luego seleccione Siguiente.
Especificar nombre para mostrar: Escriba un nombre y luego seleccione Siguiente. Ejemplo: https://portal.contoso.com/
Elegir perfil: Seleccione Perfil de AD FS 2.0 y luego seleccione Siguiente.
Configurar certificado: Seleccione Siguiente.
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:
- Tipo de extremo: Extremos de consumo de aserción SAML
- Enlace:POST
- Índice: n/d (0)
- URL: https://portal.contoso.com/signin-saml2
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.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.
Listo para agregar confianza: Seleccione Siguiente.
Seleccione Cerrar.
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=<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/
, genere la dirección URL con los siguientes pasos:
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-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).