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.

Pour fournir une authentification externe, vous pouvez ajouter un ou plusieurs fournisseurs d'identité (IdP) compatibles SAML 2.0. Ce document décrit comment configurer divers fournisseurs d'identité pour les intégrer à un portail agissant comme fournisseur de services.

AD FS (IdP)

Paramètres d'un fournisseur d'identité tel qu'Services ADFS (Active Directory Federation Services).

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, accédez à Service > Descriptions des revendications.

  1. Sélectionnez 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

    • 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

  3. Sélectionnez OK.

À l'aide de l'outil Gestion AD FS, sélectionnez Relations d'approbation >Approbations de partie de confiance.

  1. Sélectionnez Ajouter l'approbation d'une partie de confiance.
  2. Bienvenue : sélectionnez Démarrer.
  3. Sélectionner une source de données : sélectionnez Entrer manuellement les données concernant la partie de confiance, puis Suivant.
  4. Entrer le nom complet : entrez un nom et sélectionnez Suivant. Exemple : https://portal.contoso.com/
  5. Choisir le profil : sélectionnez Profil AD FS 2.0, puis Suivant.
  6. Configurer le certificat : sélectionnez Suivant.
  7. 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 : Enter 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/, 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 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 Suivant.
  10. Prêt à ajouter l'approbation : sélectionnez Suivant.
  11. 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

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 MetadataAddress dans 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 (STS) AD FS. Il 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. Pour plus d'informations : WsFederationAuthenticationOptions.MetadataAddress
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. Pour plus d'informations : AuthenticationOptions.AuthenticationType
Authentication/SAML2/[provider]/ServiceProviderRealm
ou
Authentication/SAML2/[provider]/Wtrealm
Obligatoire. Identificateur de la partie de confiance AD FS. Exemple :https://portal.contoso.com/. Pour plus d'informations : WsFederationAuthenticationOptions.Wtrealm
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. Pour plus d'informations : WsFederationAuthenticationOptions.Wreply
Authentication/SAML2/[provider]/Caption Recommandé. Texte que l'utilisateur peut afficher dans l'interface utilisateur de connexion. Valeur par défaut : [provider]. Pour plus d'informations : WsFederationAuthenticationOptions.Caption
Authentication/SAML2/[provider]/CallbackPath Chemin d'accès contraint facultatif sur lequel traiter le rappel d'authentification. Pour plus d'informations : WsFederationAuthenticationOptions.CallbackPath
Authentication/SAML2/[provider]/BackchannelTimeout Valeur du délai d'expiration pour les communications des canaux arrière. Exemple : 00:05:00 (5 minutes). Pour plus d'informations : WsFederationAuthenticationOptions.BackchannelTimeout
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. WsFederationAuthenticationOptions.UseTokenLifetime.
Authentication/SAML2/[provider]/AuthenticationMode Mode du logiciel intermédiaire d'authentification OWIN. Pour plus d'informations : AuthenticationOptions.AuthenticationMode
Authentication/SAML2/[provider]/SignInAsAuthenticationType AuthenticationType utilisé lors de la création de System.Security.Claims.ClaimsIdentity. Pour plus d'informations : WsFederationAuthenticationOptions.SignInAsAuthenticationType
Authentication/SAML2/[provider]/ValidAudiences Liste séparée par des virgules d'URL d'audience. Pour plus d'informations : TokenValidationParameters.AllowedAudiences
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 d'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 d'authentification unique (SSO) activé par IdP de la [spécification SAML 2.0](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html#5.1.4.IdP-Initiated SSO: POST Binding|outline). Pour garantir une réponse correcte du portail (fournisseur de service) à 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//content/sub-content/ est le chemin d'accès à la page Web à laquelle vous souhaitez accéder sur 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, à partir du chemin d'accès du fournisseur de service : /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 AD FS 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 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

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, sélectionnez Ajouter.
  2. Sélectionnez Ajouter une application que mon organisation développe.
  3. Spécifiez un nom personnalisé pour l'application, puis 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 (Wtrealm).
  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, sélectionnez 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 de fournisseur de service (<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 de fournisseur de service 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](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html#5.1.4.IdP-Initiated SSO: POST Binding|outline) SAML 2.0. Pour garantir une réponse correcte du portail (fournisseur de service) à 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//content/sub-content/ est le chemin d'accès à la page Web à laquelle vous souhaitez accéder sur le portail (fournisseur de service). 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 du fournisseur de service : /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 service provider.

.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 365 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