Configurer un fournisseur SAML 2.0 pour les portails avec AD FS
Notes
À compter du 12 octobre 2022, le portail Power Apps devient Power Pages. Plus d’informations : Microsoft Power Pages est maintenant généralement disponible (blog)
Nous allons bientôt migrer et fusionner la documentation des portails Power Apps avec la documentation de Power Pages.
Important
Les étapes de configuration des services de fédération Active Directory (AD FS) peuvent varier en fonction de la version de votre serveur AD FS.
Créer une approbation de partie de confiance AD FS
Notes
Consultez Configurer AD FS à l’aide de PowerShell ci-dessous, pour obtenir des informations sur l’exécution de ces étapes dans un script PowerShell.
À l’aide de l’outil Gestion AD FS, accédez à Service > Descriptions des revendications.
Sélectionnez Ajouter une description de revendication.
Spécifiez la revendication :
Nom complet : Identificateur persistant
Identificateur de revendication : urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
Case à cocher Activer pour : Publier cette description de revendication dans les métadonnées de fédération en tant que type de revendication pouvant être accepté par ce service de fédération
Case à cocher Activer pour : Publier cette description de revendication dans les métadonnées de fédération en tant que type de revendication pouvant être envoyé par ce service de fédération
Cliquez sur OK.
À l’aide de l’outil Gestion AD FS, sélectionnez Relations d’approbation >Approbations de partie de confiance.
Sélectionnez Ajouter l’approbation d’une partie de confiance.
Bienvenue : sélectionnez Démarrer.
Sélectionner une source de données : sélectionnez Entrer manuellement les données concernant la partie de confiance, puis Suivant.
Entrer le nom complet : entrez un nom et sélectionnez Suivant. Exemple : https://portal.contoso.com/
Choisir le profil : sélectionnez Profil AD FS 2.0, puis Suivant.
Configurer le certificat : sélectionnez Suivant.
Configurer l’URL : activez la case à cocher Activer la prise en charge du protocole WebSSO SAML 2.0. URL du service SSO SAML 2.0 de la partie de confiance : entrez https://portal.contoso.com/signin-saml2
Notez que AD FS nécessite que le portail s’exécute sur HTTPS.Notes
Le point de terminaison obtenu contient les paramètres suivants :
- Type de point de terminaison : Points de terminaison de consommation d’assertion SAML
- Liaison : POST
- Index : n/a (0)
- URL : https://portal.contoso.com/signin-saml2
Configurer les identités : entrez
https://portal.contoso.com/
, sélectionnez Ajouter, puis Suivant. Le cas échéant, vous pouvez ajouter d’autres d’identités pour chaque portail de partie de confiance supplémentaire. Les utilisateurs peuvent s’authentifier sur une ou toutes les identités disponibles.Choisir les règles d’autorisation d’émission : sélectionnez Autoriser l’accès de tous les utilisateurs à cette partie de confiance, puis Suivant.
Prêt à ajouter l’approbation : sélectionnez Suivant.
Sélectionnez Fermer.
Ajoutez la revendication ID de nom à l’approbation de partie de confiance :
Transformer le nom du compte Windows en ID de nom (transformer une revendication entrante) :
Type de revendication entrante : Nom du compte Windows
Type de revendication sortant : ID du nom
Format d’ID de nom sortant : Identificateur persistant
Transférer toutes les valeurs des revendications
Configurer le fournisseur SAML 2.0
Après avoir configuré l’approbation de la partie de confiance AD FS, vous pouvez suivre les étapes dans Configurer un fournisseur SAML 2.0 pour les portails.
Fournisseur d’identité – connexion initiée
AD FS prend en charge le profil d’authentification unique (SSO) activé par le fournisseur d’identité de la spécification SAML 2.0. Pour garantir une réponse correcte du portail (fournisseur de service) à la demande SAML lancée par le fournisseur d’identité, le paramètre RelayState doit être codé correctement.
La valeur de base de la chaîne à encoder dans le paramètre RelayState de SAML doit être au format ReturnUrl=/content/sub-content/
, où /content/sub-content/
est le chemin d’accès à la page Web à laquelle vous souhaitez accéder dans le portail (fournisseur de service). Le chemin d’accès peut être remplacé par une page Web valide du portail. La valeur de la chaîne est codée et placée dans une chaîne au format RPID=<URL encoded RPID>&RelayState=<URL encoded RelayState>
. Cette chaîne entière est à nouveau codée et ajoutée à un autre conteneur au format <https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=<URL> encoded RPID/RelayState>
.
Par exemple, étant donnés le chemin d’accès du fournisseur de service /content/sub-content/
et l’ID de la partie de confiance https://portal.contoso.com/
, construisez l’URL avec les étapes suivantes :
Coder la valeur
ReturnUrl=/content/sub-content/
pour obtenirReturnUrl%3D%2Fcontent%2Fsub-content%2F
Coder la valeur
https://portal.contoso.com/
pour obtenirhttps%3A%2F%2Fportal.contoso.com%2F
Coder la valeur
RPID=https%3A%2F%2Fportal.contoso.com%2F&RelayState=ReturnUrl%3D%2Fcontent%2Fsub-content%2F
pour obtenirRPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F
Ajoutez le chemin d’accès SSO activé par le fournisseur d’identité AD FS pour obtenir 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
Vous pouvez le script PowerShell suivant pour créer l’URL. Enregistrez le script dans un fichier nommé 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
Configurer AD FS à l’aide de PowerShell
Le processus d’ajout d’une approbation de partie de confiance dans AD FS peut également s’effectuer dans le script PowerShell suivant sur le serveur AD FS. Enregistrez le script dans un fichier nommé Add-AdxPortalRelyingPartyTrustForSaml.ps1. Après l’exécution du script, continuez à configurer les paramètres de site du portail.
<#
.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
Configurer un fournisseur SAML 2.0
Après avoir configuré l’approbation de la partie de confiance AD FS, vous pouvez suivre les étapes dans Configurer un fournisseur SAML 2.0 pour les portails.
Voir aussi
Configurer un fournisseur SAML 2.0 pour les portails avec Azure AD
FAQ sur l’utilisation de SAML 2.0 dans les portails
Configurer un fournisseur SAML 2.0 pour les portails
Notes
Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)
Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).