> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Comment intégrer SharePoint 2010/2013, y compris la configuration, le dépannage, l’accès aux journaux et les prochaines étapes.

# Intégrer SharePoint 2010/2013

Auth0 peut simplifier considérablement le processus d’authentification pour SharePoint. Dans ce tutoriel, vous apprendrez à ajouter l’<Tooltip tip="Authentification unique (SSO) : service qui, après la connexion d’un utilisateur à une application, le connecte automatiquement à d’autres applications." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=Single+Sign-on">authentification unique</Tooltip> (SSO) à SharePoint avec Auth0. Vos utilisateurs pourront se connecter à l’aide de n’importe lequel de nos [fournisseurs d’identité sociaux](/fr-CA/docs/authenticate/identity-providers/social-identity-providers) (Facebook, X, Github, etc.), [fournisseurs d’identité d’entreprise](/fr-CA/docs/authenticate/identity-providers/enterprise-identity-providers) (LDAP, Active Directory, ADFS, etc.) ou avec un nom d’utilisateur et un mot de passe.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Auth0 ne prend plus en charge Auth0Claims Provider pour SharePoint 2010 / 2013. Ce package est obsolète pour les locataires existants et n’est pas disponible pour les nouveaux locataires.
</Callout>

<div id="setup">
  ## Configuration
</div>

<div id="step-1-adding-the-integration-to-your-account">
  ### Étape 1. Ajouter l’intégration à votre compte
</div>

La première chose à faire est d’accéder à la section [Intégrations SSO](https://manage.auth0.com/#/externalapps/create) du Dashboard et de choisir **SharePoint** dans la liste des applications.

<div id="step-2-follow-the-live-documentation">
  ### Étape 2. Suivez la documentation interactive
</div>

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Si votre serveur SharePoint n’a pas accès à Internet, téléchargez manuellement les fichiers d’installation. ([En savoir plus sur l’installation hors ligne](https://github.com/auth0/auth0-sharepoint/tree/master/auth0-authentication-provider)).
</Callout>

Dans l’onglet **Settings**, vous devrez entrer l’URL de l’application Web SharePoint et l’URL externe (généralement le point de terminaison Internet dans vos mappages d’accès de remplacement).

La documentation interactive débute par l’installation des Cmdlets Auth0 pour SharePoint :

<Frame>
  <img src="https://mintcdn.com/translations/raZlN0BXDjNonwyb/docs/images/cdy7uua7fh8z/10GyFjDBJS0PoXITPeh30v/4304616303b13441c0b306be2291271f/sharepoint-cmdlets-installation.png?fit=max&auto=format&n=raZlN0BXDjNonwyb&q=85&s=36b671f888eb26527c7d7d51216f0c39" alt="SharePoint Management Shell - installation des cmdlets" width="1087" height="211" data-path="docs/images/cdy7uua7fh8z/10GyFjDBJS0PoXITPeh30v/4304616303b13441c0b306be2291271f/sharepoint-cmdlets-installation.png" />
</Frame>

Une fois l’installation terminée, vous pourrez activer ou désactiver Auth0 et le fournisseur de revendications pour les différentes applications Web. Vous devrez activer l’authentification avec Auth0 :

<Frame>
  <img src="https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/e3WetoxFwzfQ2uo7Rhum4/f53189f6fd8247ba2f472dbc10abe5dc/sharepoint-auth-installation.png?fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=f11fe7ff1f5cd8a06c6c95d792b49ff5" alt="SharePoint Management Shell - installation d’Auth0 - Activer l’authentification" width="1087" height="799" data-path="docs/images/cdy7uua7fh8z/e3WetoxFwzfQ2uo7Rhum4/f53189f6fd8247ba2f472dbc10abe5dc/sharepoint-auth-installation.png" />
</Frame>

Ensuite, installez le fournisseur de revendications pour vous assurer que le People Picker et les autorisations fonctionnent correctement :

<Frame>
  <img src="https://mintcdn.com/translations/Dcx0M11uuptU53TX/docs/images/cdy7uua7fh8z/2WYY6vJdeRqFZUS9LfgzK5/5b35393140b7c818fc811afd0ddc3220/sharepoint-cp-installation.png?fit=max&auto=format&n=Dcx0M11uuptU53TX&q=85&s=e16c74ac225c67f32c139992cd766a5e" alt="SharePoint Management Shell - installer le fournisseur de revendications" width="1087" height="267" data-path="docs/images/cdy7uua7fh8z/2WYY6vJdeRqFZUS9LfgzK5/5b35393140b7c818fc811afd0ddc3220/sharepoint-cp-installation.png" />
</Frame>

Une fois ces scripts exécutés, vous terminerez la configuration dans l’administration centrale :

<Frame>
  <img src="https://mintcdn.com/translations/3nS3prIggmJG9TUI/docs/images/cdy7uua7fh8z/3VgxRGBz9YNbFaJP7Sgz8T/64673af31849333bf370c3f46b9687f1/sharepoint-central-admin.png?fit=max&auto=format&n=3nS3prIggmJG9TUI&q=85&s=f0d05baab84896a31bb0c30ce55ad828" alt="Administration centrale SharePoint - terminer la configuration" width="750" height="514" data-path="docs/images/cdy7uua7fh8z/3VgxRGBz9YNbFaJP7Sgz8T/64673af31849333bf370c3f46b9687f1/sharepoint-central-admin.png" />
</Frame>

Notez que l’appel à `Enable-Auth0` peut être adapté pour :

* Modifier l’identifiant unique des utilisateurs (comme le courriel ou l’id d’un utilisateur)
* Permettre de transmettre des revendications supplémentaires à SharePoint
* Activer ou désactiver l’authentification Windows par défaut

L’exemple suivant ajoute également la revendication Role au mappage des revendications et autorise l’authentification Windows :

```powershell lines theme={null}
Enable-Auth0
  -auth0Domain:"fabrikam.auth0.com"
  -clientId:"bOFty3tWgpijnwMcltysNFqHgO1ziz1I"
  -webAppUrl:"http://fabrikam-sp/"
  -identifierClaimType:"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"
  -claims:@(
    "Email|http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
    "Role|http://schemas.microsoft.com/ws/2008/06/identity/claims/role", "Client ID|http://schemas.auth0.com/clientID",
    "Given Name|http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
    "Surname|http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "Picture|http://schemas.auth0.com/picture")
  -allowWindowsAuth
```

<div id="step-3-you-now-have-sharepoint-configured">
  ### Étape 3. SharePoint est maintenant configuré
</div>

Vous avez configuré SharePoint pour utiliser Auth0 comme courtier SSO. Lorsque vos utilisateurs visiteront votre site, une page de connexion leur sera présentée, affichant toutes les connexions activées pour cette application.

Selon les revendications qui ont été mappées lors de l’installation du fournisseur de revendications, ces renseignements supplémentaires seront aussi accessibles sur la page des paramètres personnels de l’utilisateur :

<Frame>
  <img src="https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/7h2QeT1ama9IqZ2kDr4KT/5f689e49311471736c74a3eb5468c390/sharepoint-user-info.png?fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=bca6a76d308429305796e17e2df29d2f" alt="SharePoint - renseignements sur l’utilisateur" width="750" height="533" data-path="docs/images/cdy7uua7fh8z/7h2QeT1ama9IqZ2kDr4KT/5f689e49311471736c74a3eb5468c390/sharepoint-user-info.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/translations/3nS3prIggmJG9TUI/docs/images/cdy7uua7fh8z/3VgxRGBz9YNbFaJP7Sgz8T/64673af31849333bf370c3f46b9687f1/sharepoint-central-admin.png?fit=max&auto=format&n=3nS3prIggmJG9TUI&q=85&s=f0d05baab84896a31bb0c30ce55ad828" alt="Administration centrale de SharePoint - configuration complète" width="750" height="514" data-path="docs/images/cdy7uua7fh8z/3VgxRGBz9YNbFaJP7Sgz8T/64673af31849333bf370c3f46b9687f1/sharepoint-central-admin.png" />
</Frame>

Notez que vous pouvez adapter l’appel à `Enable-Auth0` pour :

* Modifier l’identifiant unique des utilisateurs (comme le courriel ou l’id d’un utilisateur)
* Permettre la transmission de revendications supplémentaires à SharePoint
* Activer ou désactiver l’authentification Windows par défaut

Cet exemple ajoute aussi la revendication Role au mappage des revendications et autorise l’authentification Windows :

```powershell lines theme={null}
Enable-Auth0
  -auth0Domain:"fabrikam.auth0.com"
  -clientId:"bOFty3tWgpijnwMcltysNFqHgO1ziz1I"
  -webAppUrl:"http://fabrikam-sp/"
  -identifierClaimType:"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"
  -claims:@(
    "Email|http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
    "Role|http://schemas.microsoft.com/ws/2008/06/identity/claims/role", "Client ID|http://schemas.auth0.com/clientID",
    "Given Name|http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
    "Surname|http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "Picture|http://schemas.auth0.com/picture")
  -allowWindowsAuth
```

SharePoint utilisera désormais Auth0 comme courtier d’authentification unique (SSO).

<div id="customizing-the-login-page">
  ## Personnalisation de la page de connexion
</div>

Vous pouvez personnaliser la page de connexion en suivant les instructions de [Auth0 Universal Login](/fr-CA/docs/authenticate/login/auth0-universal-login).

Vous souhaiterez peut-être offrir aux utilisateurs un moyen de s’authentifier avec SharePoint au moyen de l’authentification Windows, en contournant Auth0. Vous pouvez le faire en personnalisant la page de connexion et en ajoutant un lien vers le point de terminaison de l’authentification Windows (généralement semblable à `https://yoursharepointserver/_windows/default.aspx?ReturnUrl=/_layouts/15/Authenticate.aspx`).

Une façon de procéder consiste à utiliser jQuery pour modifier le widget Lock et y ajouter un lien vers le point de terminaison de l’authentification Windows.

Vous devez ajouter une référence à jQuery en haut de la section `<body>` de la page de connexion personnalisée.

```html wrap lines theme={null}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
```

Avant d’appeler `lock.show()`, ajoutez le code nécessaire pour modifier le DOM HTML et ajouter le lien.

```javascript lines expandable theme={null}
// construire Lock
// var lock = ...
[...]
// Un ou plusieurs ID client SharePoint ici pour lesquels vous souhaitez
// un bouton d'authentification Windows
var sharepointClientIDs = ['your_sharepoint_client_id'];

if (sharepointClientIDs.indexOf(config.clientID) >= 0) {
  lock.on('signin ready', function() { 
    var getParameterByName = function(name) {
      name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
      var regexS = "[\\?&]" + name + "=([^&#]*)";
      var regex = new RegExp(regexS);
      var results = regex.exec(window.location.search);
      if (results == null) return null;
      else return results[1];
    };
    // obtenir l'hôte à partir de l'URL de rappel
    var parser = document.createElement('a');
    parser.href = config.callbackURL;
    var host = parser.host;
    var windowsAuthURL = "https://" + host + "/_windows/default.aspx?ReturnUrl=/_layouts/15/Authenticate.aspx";
    var wctx = getParameterByName("wctx");
    if (wctx) {
      windowsAuthURL += "&Source=" + wctx;
    }

    $('.auth0-lock-tabs-container') 
    .after('<div><p class="auth0-lock-alternative" style="padding:5px 0;">' + 
      '<a class="auth0-lock-alternative-link" ' + 
      'href="'+ windowsAuthURL + '">' +
      'Login with Windows Authentication!!!</a>' + 
      '</p><p><span>or</span></p></div>').attr('href','https://nowhere');
  });
}

lock.show();
```

<div id="troubleshooting">
  ## Résolution des problèmes
</div>

Lorsque vous travaillez avec des revendications supplémentaires et l’autorisation, il peut être utile d’afficher les revendications de l’utilisateur actuel. L’article du spécialiste Microsoft [Liam Clearly](https://helloitsliam.com/), [Claims Viewer Web Part](https://sharepointobservations.wordpress.com/2013/08/21/sharepoint-2013-and-adfs-2-0-test-with-claims-viewer-web-part/), peut servir à résoudre tout problème lié aux revendications de l’utilisateur :

<div id="logs-in-sp2010">
  ### Journaux dans SP2010
</div>

Les erreurs et les avertissements sont consignés dans le service Unified Logging Service de SharePoint, et des outils comme ULS Viewer peuvent servir à résoudre les problèmes que vous pourriez rencontrer lors de l’utilisation du fournisseur de revendications.

Pour en savoir plus sur ULS Viewer et obtenir ses spécifications, consultez la documentation Microsoft [ULS Viewer](https://www.microsoft.com/en-us/download/details.aspx?id=44020).

<div id="logs-in-sp2013">
  ### Journaux de SP2013
</div>

Pour SharePoint 2013, nous n’utilisons plus Unified Logging Service pour nos journaux; nous utilisons désormais Event Tracing for Windows à la place. Cela offre de meilleures performances et vous permet de capturer tous les événements consignés de plusieurs façons.

Pour afficher les journaux en temps réel, vous pouvez télécharger l’[Auth0 Logs Processor](https://github.com/auth0/auth0-sharepoint/releases) depuis GitHub. Exécutez cet outil sur votre ou vos serveurs SharePoint pour voir tous les appels que SharePoint effectue au fournisseur de revendications :

<div id="next-steps">
  ## Prochaines étapes
</div>

<div id="authorization">
  ### Autorisation
</div>

Les revendications transmises par Auth0 peuvent aussi servir à l’autorisation dans SharePoint. Par exemple, un utilisateur dont la revendication Role contient **Fabrikam HR** devrait avoir accès à un site précis ou y avoir le rôle de contributeur.

Prenons Azure AD comme exemple. Dans cet annuaire infonuagique, les utilisateurs peuvent faire partie de groupes, et David fait partie de Fabrikam HR.

Lorsque David se connecte avec son compte Azure AD (et que l’attribut Security Groups est activé pour cette connexion), ses appartenances à des groupes sont stockées dans l’attribut `groups` du profil de l’utilisateur.

Si nous voulons rendre ces groupes disponibles comme rôles dans SharePoint, nous devrons écrire une [Rule](https://manage.auth0.com/#/rules) qui ajoute cela à la configuration <Tooltip tip="Security Assertion Markup Language (SAML) : protocole normalisé permettant à deux parties d’échanger des renseignements d’authentification sans mot de passe." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=SAML">SAML</Tooltip>. Cette Rule ne s’exécutera que pour l’application nommée **Fabrikam Intranet (SharePoint)**.

```javascript lines theme={null}
function (user, context, callback) {
  if (context.clientName === 'Fabrikam Intranet (SharePoint)') {
    context.samlConfiguration.mappings = {
        'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier': 'user_id',
        'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress': 'email',
        'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name': 'name',
        'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname': 'given_name',
        'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname': 'family_name',
        'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn': 'upn',
        'http://schemas.microsoft.com/ws/2008/06/identity/claims/role': 'groups'
    };
  }

  callback(null, user, context);
}
```

Cela ajoutera une revendication sortante supplémentaire `http://schemas.microsoft.com/ws/2008/06/identity/claims/role` contenant `groups`, qui sera utilisée par SharePoint pour l’autorisation.

Lors de l’installation du fournisseur de revendications, nous devons autoriser la transmission de la revendication `Role` à SharePoint en l’ajoutant à la liste de mappage des revendications :

```powershell lines theme={null}
Enable-Auth0
  -auth0Domain:"fabrikam.auth0.com"
  ...
  -claims:@(
    "Email|http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
    "Role|http://schemas.microsoft.com/ws/2008/06/identity/claims/role",
    ...)
  ...
  -Verbose
```

Par défaut, un utilisateur n’a pas accès au site.

Maintenant, au lieu d’ajouter cet utilisateur en particulier à un groupe SharePoint (p. ex. : Contributeurs), nous pouvons plutôt ajouter un **rôle** à un groupe SharePoint. Voici un exemple de script PowerShell montrant comment ajouter les membres de "Fabrikam HR" au groupe Contributeurs :

```powershell lines theme={null}
$webName = "http://fabrikam-sp"
$groupName = "Contributors"
$roleClaim = "Fabrikam HR"

$sts = Get-SPTrustedIdentityTokenIssuer "Auth0"
$claimPrincipal = New-SPClaimsPrincipal -ClaimValue $roleClaim -ClaimType "http://schemas.microsoft.com/ws/2008/06/identity/claims/role" -TrustedIdentityTokenIssuer $sts

$web = Get-SPWeb $webName
$user = New-SPUser -UserAlias $claimPrincipal.ToEncodedString() -Web $web

$group = $web.SiteGroups[$groupName]
$group.AddUser($user)
```

Une fois cette valeur de revendication ajoutée au groupe Contributors, David pourra accéder au site et en modifier le contenu.

<div id="user-profile-synchronization">
  ### Synchronisation du profil utilisateur
</div>

Par défaut, SharePoint peut synchroniser les renseignements de profil utilisateur provenant d’Active Directory. Avec Auth0, toutefois, les utilisateurs peuvent provenir de différents types de connexions (des connexions sociales aux connexions d’entreprise), ce qui nécessite une approche différente pour synchroniser les profils utilisateur.

Une première approche consisterait à créer une tâche planifiée qui s’exécute toutes les quelques heures, interroge le point de terminaison Users d’Auth0 et synchronise les renseignements de profil de ces utilisateurs.

```csharp lines expandable theme={null}
using System;

using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;

using Microsoft.Office.Server;
using Microsoft.Office.Server.UserProfiles;

namespace UserProfileSync
{
    class Program
    {
        static void Main(string[] args)
        {
            // Appeler le Management API Auth0 - https://docs.auth0.com/api/v2

            using (var site = new SPSite("http://servername"))
            {
                var context = SPServiceContext.GetContext(site);
                var profileManager = new UserProfileManager(context);

                var accountName = "i:05.t|auth0|john@example.org";
                var userProfile = profileManager.GetUserProfile(accountName);
                userProfile[PropertyConstants.HomePhone].Value = "+1 594 9392";
                userProfile.Commit();
            }
        }
    }
}
```

Autrement, cette logique pourrait aussi être implémentée sous la forme d’un HttpModule qui s’exécute chaque fois que l’utilisateur se connecte :

```csharp lines theme={null}
public class PersistUserClaimsHttpModule : IHttpModule
{
    private SPFederationAuthenticationModule FederationModule
    {
        get { return HttpContext.Current.ApplicationInstance.Modules["FederatedAuthentication"] as SPFederationAuthenticationModule; }   
    }

    public void Init(HttpApplication context)
    {
        FederationModule.SecurityTokenValidated += OnFederationSecurityTokenValidated;
    }

    private void OnFederationSecurityTokenValidated(object sender, SecurityTokenValidatedEventArgs e)
    {
        // Utiliser e.ClaimsPrincipal
    }
}
```
