Compartir por


Configurar un provedor de SAML 2.0 para portais con AD FS

Nota

A partir do 12 de outubro de 2022, Portais de Power Apps é Power Pages. Máis información: Microsoft Power Pages xa está dispoñible de forma xeral (blog)
Proximamente migraremos e uniremos a documentación de Portais de Power Apps coa documentación de Power Pages.

Importante

Os pasos para a configuración de Active Directory Federation Services (AD FS) poden variar dependendo da versión do servidor de AD FS.

Crear unha confianza das partes que dependan de FS AD

Nota

Consulte Configurar AD FS usando PowerShell para obter información sobre como realizar estes pasos nunha secuencia de comandos de PowerShell.

  1. Mediante a ferramenta de xestión AD FS, vaia a Servizo > Descricións das solicitudes.

    1. Seleccione Engadir descrición da solicitude.

    2. Especificar a solicitude:

      • Nome para mostrar:Identificador persistente

      • Identificador da solicitude:urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

      • Active a caixa de verificación para: Publicar esta descrición da solicitude en metadatos de federación como un tipo de solicitude que pode aceptar este Servizo de Federación

      • Active a caixa de verificación para: Publicar este descrición da solicitude en metadatos de federación como un tipo de solicitude que pode enviar este Servizo de Federación

    3. Seleccione Aceptar.

  2. Coa ferramenta de xestión AD FS, seleccione Relacións de confianza >Grupos de confianza.

    1. Seleccione Engadir Confianza das partes dependentes.

    2. Benvido: Seleccione Inicio.

    3. Seleccionar Orixe de Datos: Seleccione Introducir datos acerca do grupo manualmentey e seleccione Seguinte.

    4. Especificar Nome para Mostrar: Introduza un nome e seleccione Seguinte. Exemplo: https://portal.contoso.com/

    5. Escoller Perfil: Seleccione Perfil AD FS 2.0 e despois seleccione Seguinte.

    6. Configurar Certificado: Seleccione Seguinte.

    7. Configurar URL: seleccione a caixa de verificación Habilitar asistencia para o protocolo SAML 2.0 WebSSO. URL do servizo SAML 2.0 SSO das partes participantes: Introduza https://portal.contoso.com/signin-saml2
      Teña en conta que AD FS require que o portal se execute en HTTPS.

      Nota

      O extremo resultante ten a seguinte configuración:

    8. Configurar identidades: introduza https://portal.contoso.com/, seleccione Engadir e, a seguir, seleccione Seguinte. Se é aplicable, pódense engadir máis identidades para cada portal adicional do grupo de confianza. Os usuarios poden autenticar algunha ou todas as identidades dispoñibles.

    9. Escoller Regras de Autorización de emisión: Seleccione Permitir a todos os usuarios acceso a este grupo de confianza e seleccione Seguinte.

    10. Listo para Engadir Confianza: Seleccione Seguinte.

    11. Seleccione Pechar.

  3. Engadir o Id. do nome da solicitude para o grupo de confianza:

    Transformar o nome da conta de Windows en ID do nome da solicitude (Transformar unha solicitude de Entrada):

    • Tipo de solicitude de entrada: nome da conta de Windows

    • Tipo de solicitude de saída: Id. de Nome

    • Formato de ID do nome de saída: Identificador persistente

    • Transmitir a través de todos os valores de solicitude

Configurar o provedor de SAML 2.0

Despois de configurar a confianza da parte de confianza de AD FS, podes seguir os pasos de Configurar un proveedor SAML 2.0 para portais.

Inicio de sesión iniciado por un provedor de identidade–

AD FS admite o perfil de inicio de sesión único (SSO) iniciado polo provedor de identidade– da especificación SAML 2.0. Para que o portal (fornecedor do servizo) poida responder correctamente á solicitude de SAML iniciada polo provedor de identidades, o parámetro RelayState debe estar codificado correctamente.

O valor de cadea básica que se vai codificar nun parámetro RelayState de SAML debe estar no formato ReturnUrl=/content/sub-content/, onde /content/sub-content/ é o camiño á páxina web á que quere ir no portal (provedor do servizo). O camiño pódese substituír por calquera páxina web válida no portal. O valor de cadea está codificado e colócase nunha cadea de contedor do formato RPID=&lt;URL encoded RPID&gt;&RelayState=&lt;URL encoded RelayState&gt;. Esta cadea vólvese a codificar de novo completamente e engádese a outro contedor do formato <https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=&lt;URL> encoded RPID/RelayState&gt;.

Por exemplo, co camiño do fornecedor do servizo /content/sub-content/ e o ID da parte dependente https://portal.contoso.com/, cree o URL seguindo estes pasos:

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

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

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

  • Engada o camiño de SSO iniciado do provedor de identidades de AD FS–para obter o 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

Pode usar o seguinte script PowerShell para construír o URL. Garde o script nun ficheiro chamado Get-IdPInitiatedUrl.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 utilizando PowerShell

Tamén pode realizar o proceso de engadir unha confianza de participante dependente en AD FS executando o seguinte script de PowerShell no servidor AD FS. Garde o script nun ficheiro chamado Add-AdxPortalRelyingPartyTrustForSaml.ps1. Despois de executar o script, continúe coa configuración da configuración do sitio do 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 provedor de SAML 2.0

Despois de configurar a confianza das partes que dependen de FS AD, pode seguir os pasos de Configurar un provedor SAML 2.0 para portais.

Consulte tamén

Configura un provedor SAML 2.0 para portais con Azure AD
Preguntas máis frecuentes sobre o uso de SAML 2.0 en portais
Configura un proveedor SAML 2.0 para portais

Nota

Pode indicarnos as súas preferencias para o idioma da documentación? Realice unha enquisa breve. (teña en conta que esa enquisa está en inglés)

Esta enquisa durará sete minutos aproximadamente. Non se recompilarán datos persoais (declaración de privacidade).