Configurare un provider SAML 2.0 per i portali con AD FS

Nota

A partire dal 12 ottobre 2022, i portali Power Apps sono denominati Power Pages. Altre informazioni: Microsoft Power Pages è ora generalmente disponibile (blog)
A breve verrà eseguita la migrazione e l'unione della documentazione dei portali Power Apps con la documentazione di Power Pages.

Importante

I passaggi per la configurazione di Active Directory Federation Services (AD FS) potrebbero variare a seconda della versione del server AD FS.

Creare un'attendibilità componente AD FS

Nota

Vedere Configurazione di AD FS utilizzando PowerShell per informazioni su come eseguire questa operazione in uno script PowerShell.

  1. Con lo strumento di gestione AD FS, vai a Servizio > Descrizioni attestazione.

    1. Seleziona Aggiungi descrizione attestazione.

    2. Specifica l'attestazione:

      • Nome visualizzato: Identificatore persistente

      • Identificatore attestazione: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

      • Abilita casella di controllo per: pubblicare questa descrizione dell'attestazione nei metadati di federazione come tipo di richiesta che questo servizio di federazione può accettare

      • Abilita casella di controllo per: pubblicare questa descrizione dell'attestazione nei metadati di federazione come tipo di richiesta che questo servizio di federazione può inviare

    3. Seleziona OK.

  2. Mediante lo strumento di gestione AD FS, seleziona Relazioni di attendibilità > Attendibilità componente.

    1. Seleziona Aggiungi attendibilità componente.

    2. Pagina di benvenuto: seleziona Start.

    3. Seleziona origine dati: seleziona Inserisci dati sulla relying party manualmente, quindi seleziona Avanti.

    4. Specifica nome visualizzato: inserisci un nome, quindi seleziona Avanti. Esempio: https://portal.contoso.com/

    5. Scegli profilo: seleziona Profilo AD FS 2.0, quindi seleziona Avanti.

    6. Configura certificato: seleziona Avanti.

    7. Configura URL: seleziona la casella di controllo Abilita supporto per il protocollo WebSSO SAML 2.0. URL di servizio SAML SSO 2.0 del componente: inserisci https://portal.contoso.com/signin-saml2
      Nota che AD FS richiede che il portale sia in esecuzione su HTTPS.

      Nota

      L'endpoint risultante dispone delle seguenti impostazioni:

    8. Configurare le identità: immetti https://portal.contoso.com/, seleziona Aggiungi, quindi seleziona Avanti. Se applicabile, più identità possono essere aggiunte per ogni portale del componente aggiuntivo. Gli utenti possono eseguire l'autenticazione di una qualsiasi o di tutte le identità disponibili.

    9. Scegli regole di autorizzazione rilascio: seleziona Consenti a tutti gli utenti l'accesso a questo componente, quindi seleziona Avanti.

    10. Aggiunta attendibilità: seleziona Avanti.

    11. Seleziona Chiudi.

  3. Aggiungi la richiesta ID nome al trust della relying party:

    Trasforma l'attestazione Nome account Windows in ID nome (Trasformare un'attestazione in ingresso):

    • Tipo di attestazione in ingresso: nome account Windows

    • Tipo di attestazione in uscita: ID Nome

    • Formato ID nome in uscita: Identificatore persistente

    • Pass-through di tutti i valori attestazione

Configurare il provider SAML 2.0

Dopo aver configurato l'attendibilità della relying party di AD FS, puoi seguire i passaggi in Configurare un provider SAML 2.0 per i portali.

Accesso inizializzato dal provider di identità

AD FS supporta il profilo del provider di identità Single Sign-On (SSO) della specifica SAML 2.0. Affinché il portale (provider di servizi) risponda correttamente alla richiesta SAML inizializzata dal provider di identità, il parametro RelayState deve essere codificato in modo corretto.

Il valore della stringa di base da codificare nel parametro SAML RelayState deve essere nel formato ReturnUrl=/content/sub-content/ dove /content/sub-content/ è il percorso della pagina Web desiderata da visitare nel portale (provider di servizio). Il percorso può essere sostituito da qualsiasi pagina Web valida nel portale. Il valore stringa è codificata e posizionata in una stringa del contenitore del formato RPID=&lt;URL encoded RPID&gt;&RelayState=&lt;URL encoded RelayState&gt;. Questa stringa intera ancora codificata e aggiunta a un altro contenitore del formato <https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=&lt;URL> encoded RPID/RelayState&gt;.

Ad esempio, considerato il percorso del provider di servizio /content/sub-content/ e l'ID del componente: https://portal.contoso.com/ costruisci l'URL con la seguente procedura:

  • Codifica il valore ReturnUrl=/content/sub-content/ per ottenere ReturnUrl%3D%2Fcontent%2Fsub-content%2F

  • Codifica il valore https://portal.contoso.com/ per ottenere https%3A%2F%2Fportal.contoso.com%2F

  • Codifica il valore RPID=https%3A%2F%2Fportal.contoso.com%2F&RelayState=ReturnUrl%3D%2Fcontent%2Fsub-content%2F per ottenere RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F

  • Anteponi il percorso SSO inizializzato dal provider di identità AD FS per ottenere l'URL finale https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F

Puoi utilizzare il seguente script PowerShell per creare l'URL. Salva lo script in un file denominato 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

Configura AD FS mediante PowerShell

Il processo di aggiunta dell'attendibilità del relying party in AD FS può anche essere effettuato eseguendo lo script PowerShell seguente nel server AD FS. Salva lo script in un file denominato Add-AdxPortalRelyingPartyTrustForSaml.ps1. Dopo aver eseguito lo script, continua la configurazione delle impostazioni del sito portale.

<# 

.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

Configurare un provider SAML 2.0

Dopo aver configurato l'attendibilità della relying party di AD FS, puoi seguire i passaggi in Configurare un provider SAML 2.0 per i portali.

Vedi anche

Configurare un provider SAML 2.0 per i portali con Azure AD
Domande frequenti sull'utilizzo di SAML 2.0 nei portali
Configurare un provider SAML 2.0 per i portali

Nota

Puoi indicarci le tue preferenze di lingua per la documentazione? Partecipa a un breve sondaggio. (il sondaggio è in inglese)

Il sondaggio richiederà circa sette minuti. Non viene raccolto alcun dato personale (Informativa sulla privacy).