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:
- Configurare AD FS in Power Pages
- Creare un'attendibilità componente AD FS
- Completa la configurazione del provider
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.
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.
Seleziona + Nuovo provider.
In Seleziona provider di accesso seleziona Altro.
Nel Protocollo seleziona SAML 2.0.
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.
Seleziona Avanti.
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.
In Server Manager, seleziona Strumenti, quindi seleziona Gestione AD FS.
Espandi Servizio.
Nel riquadro laterale destro, seleziona Aggiungi descrizione attestazione.
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.
Seleziona OK.
Seleziona Relazioni di trust>Attendibilità componente.
Seleziona Aggiungi attendibilità componente.
Selezionare Avvia.
Seleziona Inserisci dati sulla relying party manualmente, quindi seleziona Avanti.
Immetti un nome, ad esempio https://portal.contoso.com/.
Seleziona Avanti.
Seleziona Profilo AD FS 2.0, quindi Avanti.
Nella pagina Configura certificato, seleziona Avanti.
Seleziona Abilita supporto per il protocollo WebSSO SAML 2.0.
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.
Seleziona Avanti.
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à.
Seleziona Avanti.
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.
Nella pagina Scegli regole di autorizzazione rilascio selezionare Consenti a tutti gli utenti l'accesso a questo componente e quindi selezionare Avanti.
Rivedi le impostazioni di trust e seleziona Avanti.
Seleziona Chiudi.
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
Seleziona Aggiungi regola.
Nell'elenco Modello di regola attestazione seleziona Trasforma un'attestazione in ingresso e quindi seleziona Avanti.
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
Seleziona Pass-through di tutti i valori attestazione.
Seleziona Fine, quindi seleziona OK.
Completa la configurazione del provider
Dopo aver configurato l'attendibilità della relying party di AD FS:
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=<URL encoded RPID>&RelayState=<URL encoded RelayState>
. Questa stringa intera ancora codificata e aggiunta a un altro contenitore del formato <https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=<URL> encoded RPID/RelayState>
.
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 ottenereReturnUrl%3D%2Fcontent%2Fsub-content%2F
Codifica il valore
https://portal.contoso.com/
per ottenerehttps%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 ottenereRPID%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