Configurer les paramètres du fournisseur SAML 2.0 pour les portails

Note

Cette documentation s'applique aux Portails Dynamics 365 et aux versions ultérieures.

Un ou plusieurs fournisseurs d'identité (IdP) compatibles SAML 2.0 peuvent être ajoutés pour fournir l'authentification externe. Ce document décrit comment configurer divers fournisseurs d'identité pour les intégrer à un portail agissant comme fournisseur de services (SP).

AD FS (IdP)

Paramètres d'un fournisseur d'identité tel qu'AD FS.

Créer une approbation de partie de confiance AD FS

Note

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, sélectionnez Service >Descriptions des revendications.

  1. Cliquez sur Ajouter une description de revendication...
  2. Spécifiez la revendication :

Nom complet : Identificateur persistant

  • Identificateur de revendication : urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

-Activez la case à cocher 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

-Activez la case à cocher 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.

  1. Cliquez sur Ajouter une approbation de partie de confiance...
  2. Bienvenue : cliquez sur Démarrer
  3. Sélectionner une source de données : sélectionnez Entrer manuellement les données concernant la partie de confiance et cliquez sur Suivant
  4. Entrer le nom complet : entrez un nom et cliquez sur Suivant. Exemple : https://portal.contoso.com/
  5. Choisir le profil : sélectionnez Profil AD FS 2.0 et cliquez sur Suivant
  6. Configurer le certificat : cliquez sur Suivant
  7. Configurer l'URL : cochez 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

    • Remarque : AD FS nécessite que le portail s'exécute sur HTTPS
    Note

    Le point de terminaison obtenu contient les paramètres suivants :

  8. Configurer les identités : spécifiez https://portal.contoso.com/, cliquez sur Ajouter, puis sur Suivant. Le cas échéant, d'autres d'identités peuvent être ajoutées pour chaque portail de partie de confiance supplémentaire. Les utilisateurs pourront s'authentifier sur une ou toutes les identités disponibles.

  9. Choisir les règles d'autorisation d'émission : sélectionnez Autoriser l'accès de tous les utilisateurs à cette partie de confiance, puis cliquez sur Suivant.
  10. Prêt à ajouter l'approbation : cliquez sur Suivant
  11. Cliquez sur Fermer

Ajoutez la revendication ID de nom à l'approbation de partie de confiance :

Transformez 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

Créer des paramètres de site

Appliquez les paramètres de site du portail référençant l'approbation de partie de confiance AD FS ci-dessus.

Note

Une configuration AD FS (IdP) standard utilise uniquement les paramètres suivants (avec des exemples de valeur) : Authentication/SAML2/ADFS/MetadataAddress - https://adfs.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml

  • Authentication/SAML2/ADFS/AuthenticationType - http://adfs.contoso.com/adfs/services/trust
    • Utilisez la valeur de l'attribut entityID dans l'élément racine des métadonnées de fédération (ouvrez l'URL MetadataAddressdans un navigateur qui est la valeur du paramètre de site ci-dessus)
  • Authentication/SAML2/ADFS/ServiceProviderRealm - https://portal.contoso.com/
  • Authentication/SAML2/ADFS/AssertionConsumerServiceUrl - https://portal.contoso.com/signin-saml2
    Les Métadonnées de fédération peuvent être récupérées dans PowerShell en exécutant le script suivant sur le serveur AD FS : Import-Module adfs Get-ADFSEndpoint -AddressPath /FederationMetadata/2007-06/FederationMetadata.xml

Plusieurs services IdP peuvent être configurés en remplaçant une étiquette pour la balise [provider]. Chaque étiquette unique forme un groupe de paramètres associés à un IdP. Exemples : ADFS, AzureAD, MyIdP

Nom du paramètre de site Description
Authentication/Registration/ExternalLoginEnabled Active ou désactive la connexion et l'inscription du compte externe. Valeur par défaut : true
Authentication/SAML2/[provider]/MetadataAddress Obligatoire. URL des métadonnées WS-Federation du serveur AD FS (STS). Se termine généralement par le chemin d'accès : /FederationMetadata/2007-06/FederationMetadata.xml. Exemple : https://adfs.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml. MSDN.
Authentication/SAML2/[provider]/AuthenticationType Obligatoire. Type de logiciel intermédiaire d'authentification OWIN. Spécifiez la valeur de l'attribut entityID à la racine du fichier XML des métadonnées de fédération. Exemple : http://adfs.contoso.com/adfs/services/trust. MSDN.
Authentication/SAML2/[provider]/ServiceProviderRealm
ou
Authentication/SAML2/[provider]/Wtrealm
Obligatoire. Identificateur de la partie de confiance AD FS. Exemple : https://portal.contoso.com/. MSDN.
Authentication/SAML2/[provider]/AssertionConsumerServiceUrl
ou
Authentication/SAML2/[provider]/Wreply
Obligatoire. Point de terminaison d'assertion de consommateur SAML AD FS. Exemple : https://portal.contoso.com/signin-saml2. MSDN.
Authentication/SAML2/[provider]/Caption Recommandé. Texte que l'utilisateur peut afficher dans l'interface utilisateur de connexion. Valeur par défaut : [provider]. MSDN.
Authentication/SAML2/[provider]/CallbackPath Chemin d'accès contraint facultatif sur lequel traiter le rappel d'authentification. MSDN.
Authentication/SAML2/[provider]/BackchannelTimeout Valeur du délai d'expiration pour les communications des canaux arrière. Exemple : 00:05:00 (5 minutes). MSDN.
Authentication/SAML2/[provider]/UseTokenLifetime Indique que le cycle de vie de la session d'authentification (par exemple, les cookies) doit correspondre à celui du jeton d'authentification. MSDN.
Authentication/SAML2/[provider]/AuthenticationMode Mode du logiciel intermédiaire d'authentification OWIN. MSDN.
Authentication/SAML2/[provider]/SignInAsAuthenticationType AuthenticationType utilisé lors de la création de System.Security.Claims.ClaimsIdentity. MSDN.
Authentication/SAML2/[provider]/ValidAudiences Liste séparée par des virgules d'URL d'audience. MSDN.
Authentication/SAML2/[provider]/ClockSkew Horloge à appliquer lors de la validation des heures.
Authentication/SAML2/[provider]/RequireExpirationTime Valeur indiquant si les jetons doivent avoir une valeur « expiration ».
Authentication/SAML2/[provider]/ValidateAudience Valeur booléenne permettant de contrôler si l'audience est validée pendant la validation du jeton.

Connexion activée par IdP

AD FS prend en charge le profil SSO activé par IdP de la spécification SAML 2.0. Pour garantir une réponse correcte du portail (SP) à la demande SAML activée par IdP, 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 sur le portail (SP). 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, à partir du chemin d'accès SP : /content/sub-content/ et de l'ID de partie de confiance : https://portal.contoso.com/, construisez l'URL avec les étapes :

Codez la valeur ReturnUrl=/content/sub-content/

  • pour obtenir ReturnUrl%3D%2Fcontent%2Fsub-content%2F
  • pour obtenir https%3A%2F%2Fportal.contoso.com%2F
  • Codez la valeur RPID=https%3A%2F%2Fportal.contoso.com%2F&RelayState=ReturnUrl%3D%2Fcontent%2Fsub-content%2F
  • pour obtenir RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F
  • Ajoutez le chemin d'accès SSO activé par IdP ADFS pour obtenir l'URL finale

Le script PowerShell suivant peut être utilisé pour créer l'URL (enregistrez-le dans un fichier nommé Get-IdPInitiatedUrl.ps1).

<#

.SYNOPSIS 

Constructs an IdP initiated SSO URL to access a portal page on the SP.

.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

Paramètres SAML 2.0 pour Azure Active Directory

La section précédente décrivant AD FS peut aussi être appliquée à Azure AD, car Azure AD se comporte comme un IdP compatible SAML 2.0 standard. Pour démarrer, connectez-vous au Portail de gestion Azure et créez ou sélectionnez un répertoire existant. Lorsqu'un répertoire est disponible, suivez les instructions pour ajouter une application au répertoire.

  1. Dans le menu Applications du répertoire, cliquez sur le bouton Ajouter
  2. Sélectionnez Ajouter une application que mon organisation développe
  3. Spécifiez un nom personnalisé pour l'application et choisissez le type Application Web et/ou API Web.
  4. Pour l'URL de connexion et l'URI d'ID d'application, indiquez l'URL du portail pour les deux champs https://portal.contoso.com/. Cela correspond à la valeur du paramètre de site ServiceProviderRealm
  5. À ce stade, une nouvelle application est créée. Accédez à la section Configurer du menu

    Sous la section Authentification unique, mettez à jour la première entrée URL de réponse pour inclure un chemin d'accès dans l'URL http://portal.contoso.com/signin-azure-ad

    Cela correspond à la valeur du paramètre de site AssertionConsumerServiceUrl (Wreply)

  6. Dans le menu du pied de page, cliquez sur le bouton Afficher les points de terminaison et notez le champ Document des métadonnées de fédération

Cela correspond à la valeur du paramètre de site MetadataAddress

  • Collez cette URL dans une fenêtre du navigateur pour afficher le fichier XML des métadonnées de fédération et noter l'attribut entityID de l'élément racine
  • Cela correspond à la valeur du paramètre de site AuthenticationType
Note

Une configuration Azure AD standard utilise uniquement les paramètres suivants (avec des exemples de valeur) : Authentication/SAML2/AzureAD/MetadataAddress - https://login.microsoftonline.com/01234567-89ab-cdef-0123-456789abcdef/federationmetadata/2007-06/federationmetadata.xml

Fournisseur d'identité 3 Shibboleth

Utilisez les instructions suivantes pour configurer correctement le Fournisseur d'identité Shibboleth comme service IdP. Les informations suivantes supposent qu'IdP est hébergé sur le domaine : https://idp.contoso.com.

L'URL des métadonnées de fédération est : https://idp.contoso.com/idp/shibboleth

<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"

Location="https://idp.contoso.com/idp/profile/SAML2/Redirect/SSO"/>

Configurez les fournisseurs de services (parties de confiance) en paramétrant le fichier metadata-providers.xml.

  • Chaque métadonnées de fédération SP (<SPSSODescriptor>) doit inclure une liaison de publication du service de consommation d'assertion. Il est possible d'utiliser un FilesystemMetadataProvider et de référencer un fichier de configuration contenant :
<AssertionConsumerService index="1" isDefault="true"

Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"

Location="https://portal.contoso.com/signin-saml2"/>

L'attribut Emplacement correspond au paramètre AssertionConsumerServiceUrl (Wreply).

  • Les métadonnées de fédération SP doivent spécifier un attribut entityID pour l'EntityDescriptor correspondant au paramètre AuthenticationType.

<EntityDescriptor entityID="https://portal.local.contoso.com/">;...

Note

Une configuration Shibboleth standard utilise uniquement les paramètres suivants (avec des exemples de valeur) :
Authentication/SAML2/Shibboleth/MetadataAddress - https://idp.contoso.com/idp/shibboleth

Connexion activée par IdP

Shibboleth prend en charge le profil SSO activé par IdP de la spécification SAML 2.0. Pour garantir une réponse correcte du portail (SP) à la demande SAML activée par IdP, 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 sur le portail (SP). Le chemin d'accès peut être remplacé par une page Web valide du portail. L'URL complète SSO activée par IdP doit être au format : https://idp.contoso.com/idp/profile/SAML2/Unsolicited/SSO?providerId=<URL encoded provider ID>&target=<URL encoded return path>.

Par exemple, à partir du chemin d'accès SP : /content/sub-content/ et de l'ID de partie de confiance : https://portal.contoso.com/, l'URL finale est : https://idp.contoso.com/idp/profile/SAML2/Unsolicited/SSO?providerId=https%3A%2F%2Fportal.contoso.com%2F&target=ReturnUrl%3D%2Fcontent%2Fsub-content%2F

Le script PowerShell suivant peut être utilisé pour créer l'URL (enregistrez-le dans un fichier nommé Get-ShibbolethIdPInitiatedUrl.ps1).

<# 

.SYNOPSIS

Constructs an IdP initiated SSO URL to access a portal page on the SP.

.PARAMETER path

The path to the portal page.

.PARAMETER providerId

The relying party identifier.

.PARAMETER shibbolethPath

The Shibboleth IdP initiated SSO page.

.EXAMPLE

PS C:\\> .\\Get-ShibbolethIdPInitiatedUrl.ps1 -path "/content/sub-content/" -providerId "https://portal.contoso.com/" -shibbolethPath "https://idp.contoso.com/idp/profile/SAML2/Unsolicited/SSO"

#>

param

(

[parameter(mandatory=$true,position=0)]

$path,

[parameter(mandatory=$true,position=1)]

$providerId,

[parameter(position=2)]

$shibbolethPath = "https://idp.contoso.com/idp/profile/SAML2/Unsolicited/SSO"

)

$state = "ReturnUrl=$path"

$encodedPath = [uri]::EscapeDataString($state)

$encodedRpid = [uri]::EscapeDataString($providerId)

$idpInitiatedUrl = "{0}?providerId={1}&target={2}" -f $shibbolethPath, $encodedRpid, $encodedPath

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 en exécutant le script PowerShell suivant sur le serveur AD FS (enregistrez le contenu 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 Dynamics CRM portals 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 == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]

=> issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType, Properties["http://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 == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]

=> issue(store = "[!INCLUDE[pn-active-directory](../includes/pn-active-directory.md)]", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = ";givenName,sn,mail;{{0}}", param = c.Value);

'@ -f $identityProviderValue

$issuanceAuthorizationRules = @'

@RuleTemplate = "AllowAllAuthzRule"

=> issue(Type = "http://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

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

Add-CrmRelyingPartyTrust $domain

Voir aussi

Configurer l'authentification sur le portail Dynamics 365
Définir l'identité d'authentification pour un portail
Paramètres du fournisseur OAuth2 pour les portails
Paramètres du fournisseur Open ID Connect pour les portails
Paramètres du fournisseur WS-Federation pour les portails
Authentification de l'application Facebook (onglet de page) pour les portails