Tutoriel : Implémenter l’authentification fédérée entre Microsoft Entra ID et SharePoint localement

Description du scénario

Dans ce tutoriel, vous configurez une authentification fédérée entre Microsoft Entra ID et SharePoint local. L’objectif est de permettre aux utilisateurs de se connecter à Microsoft Entra ID et d’utiliser leur identité pour accéder aux sites SharePoint locaux.

Prérequis

Pour effectuer la configuration, vous avez besoin des ressources suivantes :

  • Un locataire Microsoft Entra. Si vous n’en avez pas, vous pouvez créer un compte gratuit.
  • Une batterie de serveurs SharePoint 2013 ou version ultérieure.

Cet article utilise les valeurs suivantes :

  • Nom de l'application d'entreprise (dans Microsoft Entra ID) : SharePoint corporate farm
  • Identifiant de confiance (dans Microsoft Entra ID) / domaine (dans SharePoint) : urn:sharepoint:federation
  • loginUrl (pour Microsoft Entra ID) :https://login.microsoftonline.com/dc38a67a-f981-4e24-ba16-4443ada44484/wsfed
  • URL du site SharePoint : https://spsites.contoso.local/
  • URL de réponse du site SharePoint : https://spsites.contoso.local/_trust/
  • Nom de la configuration d’approbation SharePoint : MicrosoftEntraTrust
  • UserPrincipalName de l’utilisateur de test Microsoft Entra :AzureUser1@demo1984.onmicrosoft.com

Configurer une application d’entreprise dans Microsoft Entra ID

Pour configurer la fédération dans Microsoft Entra ID, vous devez créer une application d’entreprise dédiée. Sa configuration est simplifiée grâce au modèle préconfiguré SharePoint on-premises qui se trouve dans la galerie d’applications.

Créer une application d’entreprise

  1. Connectez-vous au Centre d’administration de Microsoft Entra au minimum en tant qu’Administrateur d’application cloud.
  2. Accédez à Identité>Applications>Applications d’entreprise>Nouvelle application.
  3. Dans la zone de recherche, entrez le filtre SharePoint (local) . Dans le volet résultats, sélectionnez SharePoint (local) .
  4. Spécifiez un nom pour votre application (dans ce tutoriel, c’est SharePoint corporate farm), puis cliquez sur Créer pour ajouter l’application.
  5. Dans la nouvelle application d’entreprise, sélectionnez Propriétés et vérifiez la valeur de l’option Affectation de l’utilisateur obligatoire. Pour ce scénario, définissez sa valeur sur Non, puis cliquez sur Enregistrer.

Configurer l’application d’entreprise

Dans cette section, vous configurez l’authentification SAML et vous définissez les revendications qui seront envoyées à SharePoint en cas d’authentification réussie.

  1. Dans la vue d’ensemble de l’application d’entreprise SharePoint corporate farm, sélectionnez 2. Configurez l’authentification unique et choisissez SAML dans la boîte de dialogue suivante.

  2. Dans la page Configurer l’authentification unique avec SAML, sélectionnez l’icône Modifier dans le volet Configuration SAML de base.

  3. Dans la section Configuration SAML de base, effectuez les étapes suivantes :

    1. Dans la zone Identificateur, vérifiez que cette valeur est présente : urn:sharepoint:federation.

    2. Dans la zone URL de réponse, entrez une URL au format suivant : https://spsites.contoso.local/_trust/.

    3. Dans la zone URL de connexion, entrez une URL au format suivant : https://spsites.contoso.local/.

    4. Sélectionnez Enregistrer.

  4. Dans la section Attributs et revendications de l’utilisateur, supprimez les types de revendication suivants, qui ne sont pas utilisables car ils ne seront pas utilisés par SharePoint pour accorder des autorisations :

    • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
    • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname
    • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname
  5. Les paramètres devraient maintenant se présenter ainsi :

    Basic SAML settings

  6. Copiez les informations dont vous aurez besoin plus tard dans SharePoint :

    • Dans la section Certificat de signature SAML, téléchargez le Certificat (en base64) . Il s’agit de la clé publique du certificat de signature utilisé par Microsoft Entra ID pour signer le jeton SAML. SharePoint en aura besoin pour vérifier l’intégrité des jetons SAML entrants.

    • Dans la section Configurer la batterie de serveurs d’entreprise SharePoint, copiez l’ URL de connexion dans un Bloc-notes et remplacez la chaîne de fin /saml2 par /wsfed.

    Important

    Veillez à remplacer /saml2 par /wsfed pour faire en sorte que Microsoft Entra ID émette un jeton SAML 1.1, comme requis par SharePoint.

    • Dans la section Configurer la batterie de serveurs d’entreprise SharePoint, copiez l’URL de déconnexion.

Configurer SharePoint pour approuver l’ID de Microsoft Entra

Créer la confiance dans SharePoint

Dans cette étape, vous créez un SPTrustedLoginProvider pour stocker la configuration dont SharePoint a besoin pour approuver Microsoft Entra ID. Pour cela, vous avez besoin des informations de Microsoft Entra ID que vous avez copiées ci-dessus. Démarrez SharePoint Management Shell et exécutez le script suivant pour le créer :

# Path to the public key of the Microsoft Entra SAML signing certificate (self-signed), downloaded from the Enterprise application in the Azure portal
$signingCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\Microsoft Entra app\SharePoint corporate farm.cer")
# Unique realm (corresponds to the "Identifier (Entity ID)" in the Microsoft Entra enterprise application)
$realm = "urn:sharepoint:federation"
# Login URL copied from the Microsoft Entra enterprise application. Make sure to replace "saml2" with "wsfed" at the end of the URL:
$loginUrl = "https://login.microsoftonline.com/dc38a67a-f981-4e24-ba16-4443ada44484/wsfed"

# Define the claim types used for the authorization
$userIdentifier = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" -IncomingClaimTypeDisplayName "name" -LocalClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"
$role = New-SPClaimTypeMapping "http://schemas.microsoft.com/ws/2008/06/identity/claims/role" -IncomingClaimTypeDisplayName "Role" -SameAsIncoming

# Let SharePoint trust the Microsoft Entra signing certificate
New-SPTrustedRootAuthority -Name "Microsoft Entra signing certificate" -Certificate $signingCert

# Create a new SPTrustedIdentityTokenIssuer in SharePoint
$trust = New-SPTrustedIdentityTokenIssuer -Name "MicrosoftEntraTrust" -Description "Microsoft Entra ID" -Realm $realm -ImportTrustCertificate $signingCert -ClaimsMappings $userIdentifier, $role -SignInUrl $loginUrl -IdentifierClaim $userIdentifier.InputClaimType

Configurer l’application web SharePoint

Dans cette étape, vous configurez une application web dans SharePoint pour approuver l’application d’entreprise Microsoft Entra Enterprise créée ci-dessus. Ayez à l’esprit certaines règles importantes :

  • L’authentification Windows doit être activée dans la zone par défaut de l’application web SharePoint. C’est nécessaire pour le robot de recherche.
  • L’URL SharePoint qui va utiliser l’authentification Microsoft Entra doit être définie avec le protocole HTTPS.
  1. Créez ou étendez l’application web. Cet article décrit deux configurations possibles :

    • Si vous créez une application web qui utilise à la fois l’authentification Windows et l’authentification Microsoft Entra dans la zone par défaut :

      1. Démarrez le shell d’administration SharePoint et exécutez le script suivant :

        # This script creates a new web application and sets Windows and Microsoft Entra authentication on the Default zone
        # URL of the SharePoint site federated with Microsoft Entra
        $trustedSharePointSiteUrl = "https://spsites.contoso.local/"
        $applicationPoolManagedAccount = "Contoso\spapppool"
        
        $winAp = New-SPAuthenticationProvider -UseWindowsIntegratedAuthentication -DisableKerberos:$true
        $sptrust = Get-SPTrustedIdentityTokenIssuer "MicrosoftEntraTrust"
        $trustedAp = New-SPAuthenticationProvider -TrustedIdentityTokenIssuer $sptrust    
        
        New-SPWebApplication -Name "SharePoint - Microsoft Entra" -Port 443 -SecureSocketsLayer -URL $trustedSharePointSiteUrl -ApplicationPool "SharePoint - Microsoft Entra" -ApplicationPoolAccount (Get-SPManagedAccount $applicationPoolManagedAccount) -AuthenticationProvider $winAp, $trustedAp
        
      2. Ouvrez le site Administration centrale de SharePoint.

      3. Sous Paramètres système, sélectionnez Configurer des mappages d’accès alternatifs. La zone Collection de mappages d’accès alternatif s’ouvre.

      4. Filtrez l’affichage avec la nouvelle application web et vérifiez que vous voyez ce qui suit :

        Alternate Access Mappings of web application

    • Si vous étendez une application web existante pour qu’elle utilise l’authentification Microsoft Entra sur une nouvelle zone :

      1. Démarrez SharePoint Management Shell et exécutez le script suivant :

        # This script extends an existing web application to set Microsoft Entra authentication on a new zone
        # URL of the default zone of the web application
        $webAppDefaultZoneUrl = "http://spsites/"
        # URL of the SharePoint site federated with ADFS
        $trustedSharePointSiteUrl = "https://spsites.contoso.local/"
        $sptrust = Get-SPTrustedIdentityTokenIssuer "MicrosoftEntraTrust"
        $ap = New-SPAuthenticationProvider -TrustedIdentityTokenIssuer $sptrust
        $wa = Get-SPWebApplication $webAppDefaultZoneUrl
        
        New-SPWebApplicationExtension -Name "SharePoint - Microsoft Entra" -Identity $wa -SecureSocketsLayer -Zone Internet -Url $trustedSharePointSiteUrl -AuthenticationProvider $ap
        
      2. Ouvrez le site Administration centrale de SharePoint.

      3. Sous Paramètres système, sélectionnez Configurer des mappages d’accès alternatifs. La zone Collection de mappages d’accès alternatif s’ouvre.

      4. Filtrez l’affichage avec l’application web qui a été étendue et vérifiez que vous voyez ce qui suit :

        Alternate Access Mappings of extended web application

Une fois l’application Web créée, vous pouvez créer une collection de sites racine et ajouter votre compte Windows en tant qu’administrateur de collection de sites principal.

  1. Créer un certificat pour le site SharePoint

    Comme l’URL SharePoint utilise le protocole HTTPS (https://spsites.contoso.local/), un certificat doit être défini sur le site Internet Information Services (IIS) correspondant. Effectuez ces étapes pour générer un certificat auto-signé :

    Important

    Les certificats auto-signés sont uniquement destinés à des fins de test. Pour les environnements de production, nous vous recommandons vivement d’utiliser des certificats émis par une autorité de certification à la place.

    1. Ouvrez la console Windows PowerShell.

    2. Exécutez le script suivant pour générer un certificat auto-signé et l’ajouter à MON magasin sur l’ordinateur :

      New-SelfSignedCertificate -DnsName "spsites.contoso.local" -CertStoreLocation "cert:\LocalMachine\My"
      
  2. Définir le certificat dans le site IIS

    1. Ouvrez la console du gestionnaire des services Internet Information Services.
    2. Développez le serveur dans l’arborescence, développez Sites, sélectionnez le site SharePoint – Microsoft Entra ID, puis Liaisons.
    3. Sélectionnez la liaison https, puis Modifier.
    4. Dans le champ Certificat TLS/SSL, choisissez le certificat à utiliser (par exemple spsites.contoso.local créé ci-dessus), puis sélectionnez OK.

    Notes

    Si vous avez plusieurs serveurs front-ends web, vous devez répéter cette opération sur chacun d’eux.

La configuration de base de l’approbation entre SharePoint et Microsoft Entra ID est maintenant terminée. Voyons comment se connecter au site SharePoint en tant qu’utilisateur Microsoft Entra.

Se connecter en tant qu’utilisateur membre

Microsoft Entra ID a deux types d’utilisateurs : les utilisateurs invités et les utilisateurs membres. Commençons par un utilisateur membre, qui est simplement un utilisateur hébergé dans votre organisation.

Créer un utilisateur membre dans Microsoft Entra ID

  1. Connectez-vous au Centre d’administration de Microsoft Entra en tant qu’Administrateur de l’utilisateur.
  2. Accédez à Identité>Utilisateurs>Tous les utilisateurs.
  3. Sélectionnez Nouvel utilisateur>Créer un utilisateur dans la partie supérieure de l’écran.
  4. Dans les propriétés Utilisateur, effectuez les étapes suivantes :
    1. Dans le champ Nom d’affichage, entrez B.Simon.
    2. Dans le champ Nom d’utilisateur principal, entrez username@companydomain.extension. Par exemple : B.Simon@contoso.com.
    3. Cochez la case Afficher le mot de passe, puis notez la valeur affichée dans le champ Mot de passe.
    4. Sélectionnez Revoir + créer.
  5. Sélectionnez Create (Créer).
  6. Vous pouvez partager le site avec cet utilisateur et lui autoriser l’accès.

Accorder des autorisations à l'utilisateur Microsoft Entra dans SharePoint

Connectez-vous à la collection de sites racine SharePoint en tant que compte Windows (administrateur de la collection de sites), puis cliquez sur Partager.
Dans la boîte de dialogue, vous devez taper la valeur exacte du nom d’utilisateur principal, par exemple AzureUser1@demo1984.onmicrosoft.com, et veiller à sélectionner le résultat de la revendication de nom (déplacez votre souris sur un résultat pour voir son type de revendication).

Important

Veillez à taper la valeur exacte de l’utilisateur que vous voulez inviter, puis choisissez le type de revendication approprié dans la liste ; sinon, le partage ne fonctionnera pas.

Screenshot of people picker results without EntraCP.

Cette limitation est due au fait que SharePoint ne valide pas l’entrée du sélecteur de personnes, ce qui peut prêter à confusion et entraîner des fautes d’orthographe ou des utilisateurs qui choisissent accidentellement un type de revendication erroné.
Pour remédier à ce scénario, une solution open source appelée EntraCP peut être utilisée pour connecter SharePoint 2019/2016/2013 à Microsoft Entra ID et résoudre l’entrée par rapport à votre client Microsoft Entra. Pour plus d’informations, consultez EntraCP.

Voici la même recherche avec EntraCP configuré : SharePoint retourne les utilisateurs réels en fonction de l’entrée :

Screenshot of people picker results with EntraCP.

Important

EntraCP n’est pas un produit Microsoft et n’est pas pris en charge par Support Microsoft. Pour télécharger, installer et configurer EntraCP sur la batterie de serveurs SharePoint sur site, consultez le site Web d’EntraCP.

L’utilisateur Microsoft Entra AzureUser1@demo1984.onmicrosoft.com peut désormais utiliser son identité pour se connecter au site SharePoint https://spsites.contoso.local/.

Accorder des autorisations à un groupe de sécurité

Ajouter le type de revendication de groupe à l’application d’entreprise

  1. Dans la vue d’ensemble de l’application d’entreprise SharePoint corporate farm, sélectionnez 2. Configurer l’authentification unique.

  2. Dans la section Attributs et revendications de l’utilisateur, effectuez ces étapes si aucune revendication de groupe n’est présente :

    1. Sélectionnez Ajouter une revendication de groupe, sélectionnez Groupes de sécurité, et vérifiez que l’Attribut source est défini sur ID de groupe.
    2. Cochez la case Personnaliser le nom de la revendication de groupe, puis cochez Émettre des revendications de groupes en tant que rôles, puis cliquez sur Enregistrer.
    3. La section Attributs et revendications de l’utilisateur doit se présenter comme ceci :

    Claims for users and group

Créer un groupe de sécurité dans Microsoft Entra ID

Créons un groupe de sécurité.

  1. Accédez à Identity>Groups.

  2. Sélectionnez Nouveau groupe.

  3. Renseignez le Type de groupe (Sécurité), le Nom du groupe (par exemple AzureGroup1) et le Type d’appartenance. Ajoutez l’utilisateur que vous avez créé ci-dessus en tant que membre, puis sélectionnez Créer :

    Create a Microsoft Entra security group

Accorder des autorisations au groupe de sécurité dans SharePoint

Les groupes de sécurité Microsoft Entra sont identifiés avec leur attribut Id, qui est un GUID (par exemple E89EF0A3-46CC-45BF-93A4-E078FCEBFC45).
Sans un fournisseur de revendications personnalisé, les utilisateurs doivent taper la valeur exacte (Id) du groupe dans le sélecteur de personnes et sélectionner le type de revendication correspondant. Ceci n’est ni convivial ni fiable.
Pour éviter cela, cet article utilise le fournisseur de revendications tiers EntraCP pour rechercher le groupe de façon conviviale dans SharePoint :

People picker search Microsoft Entra group

Gérer l’accès d’utilisateurs invités

Il existe deux types de comptes Invité :

  • Comptes Invité B2B : ces utilisateurs sont hébergés dans un locataire Microsoft Entra externe
  • Comptes Invité MSA : ces utilisateurs sont hébergés auprès d’un fournisseur d’identité Microsoft (Hotmail, Outlook) ou d’un fournisseur de comptes sociaux (Google ou similaire)

Par défaut, Microsoft Entra ID définit à la fois « l'identifiant unique de l'utilisateur » et le « nom » de la demande à l'attributuser.userprincipalname.
Malheureusement, cet attribut est ambigu pour les comptes Invité, comme le montre le tableau ci-dessous :

Attribut source défini dans l’ID de Microsoft Entra Propriété réelle utilisée par l’ID Microsoft Entra pour les invités B2B Propriété réelle utilisée par l’ID de Microsoft Entra pour les invités MSA Propriété sur laquelle SharePoint peut s’appuyer pour valider l’identité
user.userprincipalname mail, par exemple : guest@PARTNERTENANT userprincipalname, par exemple : guest_outlook.com#EXT#@TENANT.onmicrosoft.com ambiguous
user.localuserprincipalname userprincipalname, par exemple : guest_PARTNERTENANT#EXT#@TENANT.onmicrosoft.com userprincipalname, par exemple : guest_outlook.com#EXT#@TENANT.onmicrosoft.com userprincipalname

En conclusion, pour faire en sorte que les comptes Invité soient tous identifiés avec le même attribut, les revendications d’identificateur de l’application d’entreprise doivent être mises à jour de façon à utiliser l’attribut user.localuserprincipalname au lieu de user.userprincipalname.

Mettre à jour l’application pour utiliser un attribut cohérent pour tous les utilisateurs invités

  1. Dans la vue d’ensemble de l’application d’entreprise SharePoint corporate farm, sélectionnez 2. Configurer l’authentification unique.

  2. Dans la page Configurer l’authentification unique avec SAML, sélectionnez l’icône Modifier dans le volet Attributs et revendications de l’utilisateur.

  3. Dans la section Attributs et revendications de l’utilisateur, effectuez ces étapes :

    1. Sélectionnez Identificateur d’utilisateur unique (ID nom) , remplacez sa propriété Attribut source par user.localuserprincipalname, puis cliquez sur Enregistrer.

    2. Sélectionnez http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name, remplacez sa propriété Attribut source par user.localuserprincipalname, puis cliquez sur Enregistrer.

    3. La section Attributs et revendications de l’utilisateur doit se présenter comme ceci :

    User Attributes & Claims for Guests

Inviter des utilisateurs invités dans SharePoint

Remarque

Cette section part du principe que le fournisseur de revendications EntraCP est utilisé.

Dans la section ci-dessus, vous avez mis à jour l’application d’entreprise pour utiliser un attribut cohérent pour tous les comptes Invité.
À présent, la configuration d’EntraCP doit être mise à jour pour refléter cette modification et utiliser l’attribut userprincipalname pour les comptes Invité :

  1. Ouvrez le site Administration centrale de SharePoint.
  2. Sous Sécurité, sélectionnez Configuration globale d’EntraCP.
  3. Dans la section Propriété de l’identificateur d’utilisateur, définissez l’Identificateur d’utilisateur pour les utilisateurs « Invité » sur userPrincipalName.
  4. Cliquez sur OK.

Screenshot of EntraCP guests accounts configuration.

Vous pouvez maintenant inviter des utilisateurs invités dans les sites SharePoint.

Configurer la fédération pour plusieurs applications web

La configuration peut s’appliquer à une application web. Toutefois, une configuration supplémentaire est nécessaire si vous prévoyez d’utiliser le même fournisseur d’identité approuvé pour plusieurs applications web. Par exemple, supposons que vous avez une application web distincte https://otherwebapp.contoso.local/ et que vous voulez maintenant activer l’authentification Microsoft Entra sur celle-ci. Pour cela, configurez SharePoint pour qu’il passe le paramètre SAML WReply et ajoutez les URL dans l’application d’entreprise.

Configurer SharePoint pour passer le paramètre SAML WReply

  1. Sur le serveur SharePoint, ouvrez SharePoint 201x Management Shell et exécutez les commandes suivantes. Utilisez le même nom pour l’émetteur de jeton d’identité approuvé que celui que vous avez utilisé auparavant.
$t = Get-SPTrustedIdentityTokenIssuer "MicrosoftEntraTrust"
$t.UseWReplyParameter = $true
$t.Update()

Ajouter les URL dans l’application d’entreprise

  1. Connectez-vous au Centre d’administration de Microsoft Entra au minimum en tant qu’Administrateur d’application cloud.

  2. Accédez à Identité>Applications>Applications d’entreprise>. Sélectionnez l’application d’entreprise créée précédemment, puis Authentification unique.

  3. Dans la page Configurer l’authentification unique avec SAML, modifiez la section Configuration SAML de base.

  4. Dans la section URL de réponse (URL Assertion Consumer Service), ajoutez l’URL (par exemple https://otherwebapp.contoso.local/) de toutes les applications web supplémentaires qui doivent connecter des utilisateurs avec Microsoft Entra ID, puis cliquez sur Enregistrer.

Specify additional web applications

Configurer la durée de vie du jeton de sécurité

Par défaut, Microsoft Entra ID crée un jeton SAML valide pendant 1 heure, qui ne peut pas être personnalisé dans le Portail Azure ou à l’aide d’une stratégie d’accès conditionnel.
Toutefois, il est possible de créer une stratégie de durée de vie de jeton personnalisée et de l’attribuer à l’application d’entreprise que vous avez créée pour SharePoint Server.
Vous pouvez exécuter le script ci-dessous pour ce faire :

Install-Module Microsoft.Graph
Connect-MgGraph -Scopes "Policy.ReadWrite.ApplicationConfiguration","Policy.Read.All","Application.ReadWrite.All"

$appDisplayName = "SharePoint corporate farm"
$sp = Get-MgServicePrincipal -Search DisplayName:"$appDisplayName" -ConsistencyLevel eventual

$oldPolicy = Get-MgServicePrincipalTokenLifetimePolicy -ServicePrincipalId $sp.Id
if ($null -ne $oldPolicy) {
	# There can be only 1 TokenLifetimePolicy associated to the service principal (or 0, as by default)
    Remove-MgServicePrincipalAppManagementPolicy -AppManagementPolicyId $oldPolicy.Id -ServicePrincipalId $sp.Id
}

# Get / create a custom token lifetime policy
$policyDisplayName = "WebPolicyScenario"
$policy = Get-MgPolicyTokenLifetimePolicy -Filter "DisplayName eq '$policyDisplayName'"
if ($null -eq $policy) {
	$params = @{
		Definition = @('{"TokenLifetimePolicy":{"Version":1,"AccessTokenLifetime":"4:00:00"}}') 
		DisplayName = $policyDisplayName
		IsOrganizationDefault = $false
	}
	$policy = New-MgPolicyTokenLifetimePolicy -BodyParameter $params
}

# Assign the token lifetime policy to an app
$body = @{
	"@odata.id" = "https://graph.microsoft.com/v1.0/policies/tokenLifetimePolicies/$($policy.Id)"
}
Invoke-GraphRequest -Uri ('https://graph.microsoft.com/v1.0/servicePrincipals/{0}/tokenLifetimePolicies/$ref' -f $sp.Id) -Method POST -Body $body