Condividi tramite


Configurare un provider SAML 2.0 con AD FS

Active Directory Federation Services (AD FS) è uno dei provider di identità SAML 2.0 che puoi utilizzare autenticare i visitatori al tuo sito Power Pages. Puoi utilizzare qualsiasi provider conforme alla specifica SAML 2.0.

In questo articolo vengono descritti i seguenti passaggi:

Importante

I passaggi per la configurazione di AD FS possono variare a seconda della versione del server AD FS.

Configurare AD FS in Power Pages

Impostare AD FS come provider di identità per il tuo sito.

  1. Nel sito Power Pages, seleziona Sicurezza>Provider di identità.

    Se non vengono visualizzati provider di identità, assicurati che Accesso esterno sia impostato su Attivo nelle impostazioni generali di autenticazione del tuo sito.

  2. Seleziona + Nuovo provider.

  3. In Seleziona provider di accesso seleziona Altro.

  4. Nel Protocollo seleziona SAML 2.0.

  5. Immetti un nome per il provider.

    Il nome del provider è il testo sul pulsante che gli utenti visualizzano quando selezionano il loro provider di identità nella pagina di accesso.

  6. Seleziona Avanti.

  7. In URL di risposta, seleziona Copia.

    Non chiudere la scheda del browser Power Pages. Ci tornerai a breve.

Creare un'attendibilità componente AD FS

Puoi anche utilizzare uno script PowerShell per eseguire questi passaggi.

  1. In Server Manager, seleziona Strumenti, quindi seleziona Gestione AD FS.

  2. Espandi Servizio.

  3. Nel riquadro laterale destro, seleziona Aggiungi descrizione attestazione.

  4. Immettere i valori seguenti:

    • Nome visualizzato: Identificatore persistente

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

    • Seleziona Pubblicare questa descrizione dell'attestazione nei metadati… opzioni.

  5. Seleziona OK.

  6. Seleziona Relazioni di trust>Attendibilità componente.

  7. Seleziona Aggiungi attendibilità componente.

  8. Selezionare Avvia.

  9. Seleziona Inserisci dati sulla relying party manualmente, quindi seleziona Avanti.

  10. Immetti un nome, ad esempio https://portal.contoso.com/.

  11. Seleziona Avanti.

  12. Seleziona Profilo AD FS 2.0, quindi Avanti.

  13. Nella pagina Configura certificato, seleziona Avanti.

  14. Seleziona Abilita supporto per il protocollo WebSSO SAML 2.0.

  15. In URL del servizio SSO SAML 2.0 della relying party, inserisci l'URL di risposta che hai copiato. AD FS richiede che il sito Web esegua HTTPS e non HTTP.

  16. Seleziona Avanti.

  17. Nella pagina Configura identificatori, inserisci l'URL del tuo sito, quindi seleziona Aggiungi.

    Puoi aggiungere altre identità per ciascun sito Web del relying party se necessario. Gli utenti possono eseguire l'autenticazione di una qualsiasi identità.

  18. Seleziona Avanti.

  19. Nella pagina Configura ora autenticazione a più fattori, seleziona Non voglio configurare le impostazioni di autenticazione a più fattori per questo trust della relying party questa volta.

  20. Nella pagina Scegli regole di autorizzazione rilascio selezionare Consenti a tutti gli utenti l'accesso a questo componente e quindi selezionare Avanti.

  21. Rivedi le impostazioni di trust e seleziona Avanti.

  22. Seleziona Chiudi.

  23. In Modifica regole attestazione, seleziona una delle seguenti schede, a seconda dell'attendibilità che stai modificando e in quale set di regole desideri creare la regola:

    • Regole di trasformazione di accettazione
    • Regole di trasformazione di rilascio
    • Regole di autorizzazione di rilascio
    • Regole di autorizzazione alla delega
  24. Seleziona Aggiungi regola.

  25. Nell'elenco Modello di regola attestazione seleziona Trasforma un'attestazione in ingresso e quindi seleziona Avanti.

  26. Immetti o seleziona i valori seguenti:

    • Nome regola attestazione: trasforma il nome account Windows in ID nome

    • Tipo di attestazione in ingresso: Nome account Windows

    • Tipo di attestazione in uscita: ID nome

    • Formato ID nome in uscita: Identificatore persistente

  27. Seleziona Pass-through di tutti i valori attestazione.

  28. Seleziona Fine, quindi seleziona OK.

Completa la configurazione del provider

Dopo aver configurato l'attendibilità della relying party di AD FS:

  1. Creare una nuova registrazione di app nel portale di Azure.

  2. Inserisci le impostazioni del sito in Power Pages.

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 sito Web del provider di servizi risponda correttamente alla richiesta SAML del provider di identità, è necessario codificare il parametro RelayState.

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 sito Web. È possibile specificare il percorso di qualsiasi pagina valida sul sito Web. 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 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

Configura AD FS mediante PowerShell

Invece di aggiungere l'attendibilità del relying party in AD FS manualmente, può anche eseguire lo script PowerShell seguente nel server AD FS. Salva lo script in un file denominato Add-AdxPortalRelyingPartyTrustForSaml.ps1. Dopo l'esecuzione dello script, continua a configurare le impostazioni del sito in 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

Vedi anche

Configurare un provider SAML 2.0
Configurare un provider SAML 2.0 con Microsoft Entra ID
Domande frequenti su SAML 2.0