Configurer un fournisseur SAML 2.0 avec AD FS
Les services de fédération Active Directory (AD FS) sont l’un des fournisseurs d’identité SAML 2.0 que vous pouvez utiliser pour authentifier les visiteurs sur votre site Power Pages. Vous pouvez utiliser n’importe quel fournisseur conforme à la spécification SAML 2.0.
Cet article décrit les étapes suivantes :
- Configurer AD FS dans Power Pages
- Créer une approbation de partie de confiance AD FS
- Terminer la configuration du fournisseur
Important
Les étapes de configuration d’AD FS peuvent varier en fonction de la version de votre serveur AD FS.
Configurer AD FS dans Power Pages
Définissez AD FS comme fournisseur d’identité pour votre site.
Dans votre site Power Pages, sélectionnez Sécurité>Fournisseurs d’identité.
Si aucun fournisseur d’identité n’apparaît, assurez-vous que Connexion externe est défini sur Activé dans les paramètres d’authentification généraux de votre site.
Sélectionnez + Nouveau fournisseur.
Sous Sélectionner un fournisseur de connexion, sélectionnez Autre.
Sous Protocole, sélectionnez SAML 2.0.
Entrez un nom pour le fournisseur.
Le nom du fournisseur est le texte du bouton que les utilisateurs voient lorsqu’ils sélectionnent leur fournisseur d’identité sur la page de connexion.
Sélectionnez Suivant.
Sous URL de réponse, sélectionnez Copier.
Ne fermez pas l’onglet de votre navigateur Power Pages. Vous y reviendrez bientôt.
Créer une approbation de partie de confiance AD FS
Vous pouvez également utiliser un script PowerShell pour effectuer ces étapes.
Dans le gestionnaire de serveurs, sélectionnez Outils, puis sélectionnez Gestion AD FS.
Développez Service.
Dans le volet de droite, sélectionnez Ajouter une description de revendication.
Saisissez les valeurs suivantes :
Nom complet : Identificateur persistant
Identificateur de revendication : urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
Sélectionnez les deux options Publier cette description de revendication dans les métadonnées de fédération… .
Sélectionnez OK.
Sélectionnez Relations d’approbation>Approbations de partie de confiance.
Sélectionnez Ajouter l’approbation d’une partie de confiance.
Cliquez sur Démarrer.
Sélectionnez Entrer manuellement les données concernant la partie de confiance, puis sélectionnez Suivant.
Entrez un nom, par exemple, https://portal.contoso.com/.
Sélectionnez Suivant.
Sélectionnez Profil AD FS 2.0, puis sélectionnez Suivant.
Sur la page Configurer le certificat, sélectionnez Suivant.
Sélectionnez Activer la prise en charge du protocole WebSSO SAML 2.0.
Sous URL du service SSO SAML 2.0 de la partie de confiance, saisissez l’URL de réponse que vous avez copiée. AD FS nécessite que le site Web exécute HTTPS, et non HTTP.
Sélectionnez Suivant.
Sur la page Configurer les identificateurs, entrez l’URL de votre site, puis sélectionnez Ajouter.
Vous pouvez ajouter d’autres d’identités pour chaque site Web de partie de confiance supplémentaire, si nécessaire. Les utilisateurs peuvent s’authentifier en utilisant les identités disponibles.
Sélectionnez Suivant.
Sur la page Configurer l’authentification multifacteur maintenant ?, sélectionnez Je ne souhaite pas configurer les paramètres d’authentification multifacteur pour cette approbation de partie de confiance pour le moment.
Dans la page Choisir les règles de délivrance des autorisations, sélectionnez Autoriser tous les utilisateurs à accéder à cette partie de confiance, puis Suivant.
Examinez les paramètres d’approbation, puis sélectionnez Suivant.
Sélectionnez Fermer.
Dans Modifier les règles de revendication, sélectionnez l’un des onglets suivants, en fonction de l’approbation que vous modifiez et de l’ensemble de règles dans lequel vous souhaitez créer la règle :
- Règles de transformation de l’acceptation
- Règles de transformation de l’émission
- Règles d’autorisation de l’émission
- Règles d’autorisation de la délégation
Sélectionnez Ajouter une règle.
Dans la liste des Modèles de règle de revendication, sélectionnez Transformer une revendication entrante, puis sélectionnez Suivant.
Entrez ou sélectionnez les valeurs suivantes :
Nom de la règle de revendication : Transformer le nom du compte Windows en ID de nom
Type de revendication entrante : Nom du compte Windows
Type de revendication sortante : ID du nom
Format d’ID de nom sortant : Identificateur persistant
Sélectionnez Transférer toutes les valeurs des revendications.
Sélectionnez Terminer, puis sélectionnez OK.
Terminer la configuration du fournisseur
Après avoir configuré l’approbation de partie de confiance AD FS :
Connexion initiée par le fournisseur d’identité
AD FS prend en charge le profil d’authentification unique (SSO) activée par le fournisseur d’identité de la spécification SAML 2.0. Pour que le site Web du fournisseur de services réponde correctement à la demande SAML du fournisseur d’identité, vous devez encoder le paramètre RelayState
.
La valeur de la chaîne de base à 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 à laquelle vous souhaitez accéder sur le site Web du fournisseur de services. Vous pouvez spécifier le chemin d’accès à toute page valide sur le site Web. La valeur de la chaîne est codée et placée dans une chaîne de conteneur 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é le chemin d’accès du fournisseur de services /content/sub-content/
et l’ID de la partie de confiance https://portal.contoso.com/
, suivez ces étapes pour construire l’URL :
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 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
Configurer AD FS à l’aide de PowerShell
Au lieu d’ajouter manuellement une approbation de partie de confiance dans AD FS, vous pouvez exécuter le script PowerShell suivant sur le serveur AD FS. Enregistrez le script dans un fichier nommé Add-AdxPortalRelyingPartyTrustForSaml.ps1
. Une fois le script exécuté, continuez à configurer les paramètres du site dans 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
Voir aussi
Configurer un fournisseur SAML 2.0
Configurer un fournisseur SAML 2.0 avec Microsoft Entra ID
FAQ sur SAML 2.0