Obtenir l’identité et les propriétés de l’utilisateur dans SharePoint

Vous pouvez récupérer l’identité et les informations utilisateur de différentes manières, en fonction du type d’informations que vous souhaitez récupérer. Cet article vous indique plusieurs manières de procéder.

Conditions requises pour récupérer l’identité et les propriétés utilisateur

Concepts fondamentaux à connaître pour la récupération des propriétés et de l’identité utilisateur

Le tableau suivant répertorie des articles utiles pour vous aider à comprendre des concepts impliqués dans la création de compléments SharePoint.

Article Description
Autorisations des compléments dans SharePoint Learn about SharePoint add-in permissions for working with SharePoint, including types of add-in permissions, permission request scopes, and managing permissions. This article also discusses the differences in add-in permission rights and user rights.
Flux OAuth avec jetons de contexte pour les compléments SharePoint Découvrez le flux d’autorisation et l’authentification OAuth pour les compléments hébergés sur le cloud.
Commencer à créer des compléments hébergés par un fournisseur pour SharePoint Découvrez comment créer un complément SharePoint basique hébergé par un fournisseur avec les outils de développement Office pour Visual Studio, comment interagir avec les sites Microsoft SharePoint en utilisant le CSOM SharePoint et comment implémenter OAuth dans un complément SharePoint.

Récupérer l’identité de l’utilisateur du site web à l’aide de l’objet Web

The easiest way to retrieve the identity of the current user of the website is via the Web object. With the TokenHelper.cs file in your project, you can get the current website user identity by using the following code snippet.

    ClientContext clientContext =
                TokenHelper.GetClientContextWithAccessToken(sharepointUrl.ToString(), accessToken);
    
                //Load the properties for the Web object.
                Web web = clientContext.Web;
                clientContext.Load(web);
                clientContext.ExecuteQuery();
    
                //Get the site name.
                siteName = web.Title;
    
                //Get the current user.
                clientContext.Load(web.CurrentUser);
                clientContext.ExecuteQuery();
                currentUser = clientContext.Web.CurrentUser.LoginName;

Si vous utilisez Office 365, le nom de connexion que vous obtenez est semblable à i:0#.f|membership|adam@contoso.com.

Si vous utilisez Microsoft SharePoint au niveau local et que l’utilisateur est connecté en tant qu’utilisateur normal utilisant NTLM, le nom de connexion que vous recevez est semblable à i:0#.w|contoso\adam.

Si vous utilisez SharePoint sur site et que l’utilisateur est connecté à l’aide d’un compte de batterie, le nom de connexion que vous recevez est SHAREPOINT\System.

Récupérer l’identité utilisateur à l’aide de la méthode ResolvePrincipal

The following is another way to retrieve a user's sign-in name. If you have the user's email address or display name, you can use the ResolvePrincipal method to get the user's sign-in name.

Notes

Les API se trouvent dans l’espace de noms Microsoft.SharePoint.Client.Utilities dans l’assembly Microsoft.SharePoint.Client.dll.

Vous trouverez ci-dessous un exemple de code indiquant la façon d’obtenir les informations de connexion de l’utilisateur.

    ClientResult<Microsoft.SharePoint.Client.Utilities.PrincipalInfo> persons = Microsoft.SharePoint.Client.Utilities.Utility.ResolvePrincipal(clientContext, clientContext.Web, <email>, Microsoft.SharePoint.Client.Utilities.PrincipalType.User, Microsoft.SharePoint.Client.Utilities.PrincipalSource.All, null, true);
                clientContext.ExecuteQuery();
                Microsoft.SharePoint.Client.Utilities.PrincipalInfo person = persons.Value;

La valeur Person.LoginName indique les informations de connexion.

Récupérer les propriétés d’identité et de profil d’un utilisateur à l’aide du jeton OAuth et des API de fonctionnalités sociales

If you want to retrieve the user's identity and properties, you can use the OAuth token and the social features APIs. First get the OAuth token, and then set it to the client context.

L’exemple de code suivant montre comment obtenir les propriétés de profil de l’utilisateur.


    ClientContext clientContext = new ClientContext(<sharepointurl>);
    clientContext.AuthenticationMode = ClientAuthenticationMode.Anonymous;
    clientContext.FormDigestHandlingEnabled = false;
    clientContext.ExecutingWebRequest +=
    delegate(object oSender, WebRequestEventArgs webRequestEventArgs)
    {                      
        webRequestEventArgs.WebRequestExecutor.RequestHeaders["Authorization"] =
            "Bearer " + accessToken;
    };

Utilisez ensuite l’API UserProfilesPeopleManager pour obtenir les propriétés de l’utilisateur qui utilise le complément.

    PeopleManager peopleManager = new PeopleManager(clientContext);
    PersonProperties personDetails = peopleManager.GetMyProperties();
    clientContext.Load(personDetails, personsD => personsD.AccountName, personsD => personsD.Email,  personsD => personsD.DisplayName);
                    clientContext.ExecuteQuery();

Pour que le code fonctionne :

  • Les services partagés profil utilisateur doivent être configurés et synchronisés sur SharePoint pour les utilisateurs.

  • Vous devez ajouter l'étendue d'autorisation pour les fonctionnalités de mise en réseau dans le manifeste de complément :

        <AppPermissionRequest Right="Read" Scope="http://sharepoint/social/tenant" />
    
  • Les API se trouvent dans Microsoft.SharePoint.Client.UserProfiles.dll.

Voici un autre exemple d’extrait de code indiquant comment accéder au magasin de profils utilisateur.

    ClientContext clientContext; //Create this like you normally would.               
    PeopleManager peopleManager = new PeopleManager(clientContext);
    PersonProperties myProperties = peopleManager.GetMyProperties();
    clientContext.Load(myProperties);
    clientContext.ExecuteQuery();

Voir aussi