Loading
Identification de vos utilisateurs et gestion de l’accès
Interrogation des informations utilisateur

Interrogation des informations utilisateur

Une application connectée peut interroger le point de terminaison UserInfo pour consulter des informations sur l'utilisateur associé avec le jeton d'accès de l'application connectée. Salesforce renvoie des informations personnelles de base sur l'utilisateur et des points de terminaison importants avec lesquels l'application connectée peut communiquer, notamment des photos et des points de terminaison d'API accessibles. Ce point de terminaison UserInfo permet d'accéder uniquement aux informations de l'utilisateur actif. Il ne permet pas d'accéder aux autres utilisateurs de l'organisation.

Éditions requises

Disponible avec : Salesforce Classic et Lightning Experience
Disponible avec : Toutes les éditions

Le point de terminaison UserInfo est une API RESTful API définie par OpenID Connect. Le format de l'URL du point de terminaison est : https://login.salesforce.com/services/oauth2/userinfo.

Remarque
Remarque Pour un Sandbox, login.salesforce.com est remplacé par test.salesforce.com. Pour un site Experience Cloud, login.salesforce.com est remplacé par l'URL du site, telle que NomMonDomaine.my.site.com/.well-known/openid-configuration. L'URL doit être HTTPS.

Voici le flux d'interrogation du point de terminaison UserInfo.

  1. L'application connectée envoie une requête au point de terminaison UserInfo Salesforce. La requête doit contenir le jeton d'accès de l'application connectée.
  2. Salesforce répond avec les informations de l'utilisateur.

Interroger le point de terminaison UserInfo

Utilisez les paramètres suivants pour interroger le point de terminaison UserInfo. Vous pouvez utiliser un jeton d'accès dans un en-tête de demande d'autorisation ou dans une demande avec le paramètre oauth_token.

Important
Important Lors du développement d'intégrations OAuth, transmettez toujours des informations confidentielles dans le corps d'une requête POST ou dans un en-tête de requête. N'utilisez pas les paramètres GET dans la chaîne de requête URL pour transmettre des informations confidentielles. Les informations confidentielles comprennent, sans s'y limiter, les noms d'utilisateur, les mots de passe, les jetons OAuth, les secrets clients et toute information d'identification personnelle. Pour plus d'informations sur les meilleures pratiques de sécurité, consultez Stockage des données confidentielles dans le Secure Coding Guide.
Paramètre Description
oauth_toke n Le jeton OAuth utilisé par une application connectée pour demander l'accès à une ressource protégée au nom de l'application cliente. Des autorisations supplémentaires sous forme d'étendues peuvent accompagner le jeton d'accès.
format

Facultatif. Spécifiez le format du résultat renvoyé. Les valeurs sont :

  • json
  • xml

Le client peut également spécifier le format renvoyé dans un en-tête accepter-demander en utilisant l'un des formats ci-dessous.

  • Accept: application/json
  • Accept: application/xml
  • Accept: application/x-www-form-urlencoded

L'en-tête de la requête prend également en charge les éléments suivants.

  • Le caractère générique */* est accepté et renvoie JSON.
  • Une liste de valeurs, qui est vérifiée de gauche à droite. Par exemple : application/xml,application/json,application/html,*/* renvoie XML.

Le paramètre format est prioritaire sur l'en-tête de demande d'accès.

version Facultatif. Spécifiez un numéro de version d'API SOAP ou la chaîne littérale latest. Si cette valeur n'est pas spécifiée, les URL d'API renvoyées contiennent la valeur littérale {version} à la place du numéro de version. Si la valeur est spécifiée avec latest, la version la plus récente de l'API est utilisée.
PrettyPrint Facultatif. Accepté uniquement dans un en-tête et pas en tant que paramètre d'URL. Spécifiez ce paramètre afin d'optimiser la sortie XML ou JSON renvoyée pour la lisibilité plutôt que pour la taille. Par exemple, utilisez le paramètre suivant dans un en-tête : X-PrettyPrint:1.
callback

Facultatif. Spécifiez un nom de fonction JavaScript valide. Vous pouvez utiliser ce paramètre, lorsque le format spécifié est JSON. La sortie est emballée dans le nom de cette fonction (JSONP). Par exemple, si une demande à https://server/id/orgid/userid/ renvoie {"function":"name"}, une demande à https://server/id/orgid/userid/?callback=baz renvoie baz({"function":"name"});.

Remarque
Remarque JSONP n'est plus renvoyé pour les requêtes Identity Service en raison du type MIME strict. Vos demandes doivent ajouter 'format=jsonp'avec le paramètre de rappel pour le service d’identité retourne JavaScript. Quand le service d’identité détecte le format JSONP, il renvoie le type JavaScript requis ('application/javascript').
is_salesforce_integration_user Facultatif. Spécifiez ce paramètre pour déterminer si l'utilisateur détient la licence utilisateur Salesforce Integration.

Réponse de point de terminaison UserInfo Salesforce

En réponse à une requête valide, Salesforce renvoie les informations sous le format JSON par défaut ou le format spécifié dans le paramètre format.

La réponse inclut les valeurs répertoriées dans le OpenID Profil client de base Connect, l'ID d'utilisateur, l'ID d'organisation, le fil et les URL de profil Salesforce.

Dans la réponse, l'attribut email_verified indique si les utilisateurs vérifient leur adresse e-mail après les événements suivants : Par exemple, un administrateur Salesforce crée l'utilisateur Roberta Smith. Roberta reçoit un message « Bienvenue dans Salesforce », avec un lien de vérification de son compte. Lorsqu'elle clique sur le lien, la valeur email_verified prend la valeur true.

  • ils changent leur adresse e-mail
  • ils changent leur mot de passe, ou un administrateur Salesforce le réinitialise
  • ils vérifient leur identité lorsqu’ils se connectent à partir d’un nouvel appareil ou d’un nouveau navigateur
  • Un administrateur Salesforce les crée en tant que nouveaux utilisateurs.

La réponse suivante utilise le format JSON :

{"sub":"https://login.salesforce.com/id/00Dx000.../005x000...",
"user_id":"005x000...",
"organization_id":"00Dx000...",
"name":"yourInstance LastName",
"email":"user1@1135222488950007.com",
"email_verified":true,"given_name":"yourInstance","family_name":"LastName",
"zoneinfo":"America/Los_Angeles",
"photos":{"picture":"https://yourInstance.salesforce.com/profilephoto/005/F","thumbnail":"https://yourInstance.salesforce.com/profilephoto/005/T"},
"profile":"https://yourInstance.salesforce.com/005x000...",
"picture":"https://yourInstance.salesforce.com/profilephoto/005/F",
"address":{"country":"us"},
"urls":{"enterprise":"https://yourInstance.salesforce.com/services/Soap/c/{version}/00Dx00...",
"partner":"https://yourInstance.salesforce.com/services/Soap/u/{version}/00Dx00...",
"rest":"https://yourInstance.salesforce.com/services/data/v{version}/",
"sobjects":"https://yourInstance.salesforce.com/services/data/v{version}/sobjects/",
"search":"https://yourInstance.salesforce.com/services/data/v{version}/search/",
"query":"https://yourInstance.salesforce.com/services/data/v{version}/query/",
"recent":"https://yourInstance.salesforce.com/services/data/v{version}/recent/",
"profile":"https://yourInstance.salesforce.com/005x000...",
"feeds":"https://yourInstance.salesforce.com/services/data/v{version}/chatter/feeds",
"groups":"https://yourInstance.salesforce.com/services/data/v{version}/chatter/groups",
"users":"https://yourInstance.salesforce.com/services/data/v{version}/chatter/users",
"feed_items":"https://yourInstance.salesforce.com/services/data/v{version}/chatter/feed-items"},
"active":true,"user_type":"STANDARD","language":"en_US","locale":"en_US",
"utcOffset":-28800000,"updated_at":"2013-12-02T18:46:42Z"}

La réponse suivante utilise le format XML.

<?xml version="1.0" encoding="UTF-8"?>
<user>
<sub>https://login.salesforce.com/id/00Dx000.../005x000...</sub>
<user_id>005x000...</user_id>
<organization_id>00Dx000...</organization_id>
<preferred_username>user1@1135222488950007.com</preferred_username>
<nickname>user1.3860098879512678E12</nickname>
<name>user1 LastName</name>
<email>user1@1135222488950007.com</email>
<email_verified>true</email_verified>
<given_name>user1</given_name>
<family_name>LastName</family_name>
<zoneinfo>America/Los_Angeles</zoneinfo>
<photos>
<picture>https://yourInstance.salesforce.com/profilephoto/005/F</picture>
<thumbnail>https://yourInstance.salesforce.com/profilephoto/005/T</thumbnail></photos>
<profile>https://yourInstance.salesforce.com/005x000...</profile>
<picture>https://yourInstance.salesforce.com/profilephoto/005/F</picture>
<address>
<country>us</country>
</address>
<urls>
<enterprise>https://yourInstance.salesforce.com/services/Soap/c/{version}/00Dx0000002rIh1</enterprise>
<metadata>https://yourInstance.salesforce.com/services/Soap/m/{version}/00Dx0000002rIh1</metadata>
<partner>https://yourInstance.salesforce.com/services/Soap/u/{version}/00Dx0000002rIh1</partner>
<rest>https://yourInstance.salesforce.com/services/data/v{version}/</rest>
<sobjects>https://yourInstance.salesforce.com/services/data/v{version}/sobjects/</sobjects>
<search>https://yourInstance.salesforce.com/services/data/v{version}/search/</search>
<query>https://yourInstance.salesforce.com/services/data/v{version}/query/</query>
<recent>https://yourInstance.salesforce.com/services/data/v{version}/recent/</recent>
<profile>https://yourInstance.salesforce.com/005x000...</profile>
<feeds>https://yourInstance.salesforce.com/services/data/v{version}/chatter/feeds</feeds>
<groups>https://yourInstance.salesforce.com/services/data/v{version}/chatter/groups</groups>
<users>https://yourInstance.salesforce.com/services/data/v{version}/chatter/users</users>
<feed_items>https://yourInstance.salesforce.com/services/data/v{version}/chatter/feed-items</feed_items>
</urls>
<active>true</active>
<user_type>STANDARD</user_type>
<language>en_US</language>
<locale>en_US</locale>
<utcOffset>-28800000</utcOffset>
<updated_at>2013-12-02T18:46:42.000Z</updated_at>
</user>

Voici la description des paramètres renvoyés.

Paramètre Description
sub L'URL du point de terminaison UserInfo qui est identique à l'URL interrogée.
user_id L'ID l'utilisateur interrogé.
organization_id L'ID de l'organisation Salesforce de l'utilisateur interrogé.
preferred_username Le nom d'utilisateur de l'utilisateur interrogé.
nickname Le surnom Experience Cloud de l'utilisateur interrogé.
name Le nom d'affichage (nom complet) de l'utilisateur interrogé.
email L'adresse e-mail de l'utilisateur interrogé.
email_verified

Indique si l'adresse e-mail de l'utilisateur interrogé a été vérifiée en cliquant sur un lien de l'e-mail « Bienvenue dans Salesforce ».

La valeur email_verified est true lorsque les utilisateurs cliquent sur un lien dans l'e-mail qu’ils reçoivent après ce scénario : Par exemple, un administrateur Salesforce crée l'utilisateur Roberta Smith. Roberta reçoit un message « Bienvenue dans Salesforce », avec un lien de vérification de son compte. Lorsqu'elle clique sur le lien, la valeur email_verified prend la valeur true.

  • ils changent leur adresse e-mail
  • ils changent leur mot de passe, ou un administrateur Salesforce le réinitialise
  • ils vérifient leur identité lorsqu’ils se connectent à partir d’un nouvel appareil ou d’un nouveau navigateur
  • un administrateur Salesforce les crée en tant que nouveaux utilisateurs
given_name Le prénom de l'utilisateur interrogé.
family_name Nom de famille de l'utilisateur interrogé.
zoneinfo Le fuseau horaire dans les paramètres de l'utilisateur interrogé.
photos

Une carte d'URL dans les photos de profil de l'utilisateur interrogé, spécifiée avec picture, thumbnail ou profile.

Remarque
Remarque L'accès à ces URL requiert la transmission d'un jeton d'accès.
address L'adresse de l'utilisateur interrogé, qui peut inclure la rue, la ville, la région/province, le pays et le code postal de l'utilisateur.
mobile_phone Le numéro de téléphone mobile spécifié dans les paramètres de l'utilisateur interrogé.
mobile_phone_verified L'utilisateur interrogé a confirmé que le numéro de téléphone mobile est valide.
urls

Une carte contenant les divers points de terminaison de l'API qui peuvent être utilisés avec l'utilisateur interrogé.

Remarque
Remarque L'accès à ces points de destination REST requiert la transmission d'un jeton d'accès.
  • enterprise (SOAP)
  • metadata (SOAP)
  • partner (SOAP)
  • rest (REST)
  • sobjects (REST)
  • search (REST)
  • query (REST)
  • recent (REST)
  • profile
  • feeds (Chatter)
  • feed-items (Chatter)
  • groups (Chatter)
  • users (Chatter)
  • custom_domain

    Si l'organisation n'a pas de domaine personnalisé configuré et propagé, cette valeur est omise.

active Une valeur booléenne spécifiant si l'utilisateur interrogé est actif.
user_type Le type de l'utilisateur interrogé.
language La langue de l'utilisateur interrogé.
locale Les paramètres régionaux de l'utilisateur interrogé.
utcOffset Décalage en millisecondes avec l'heure UTC du fuseau horaire de l'utilisateur interrogé.
updated_at Le format xsd datetime de la dernière modification de l'utilisateur, par exemple, 2010-06-28T20:54:09.000Z.
is_app_installed La valeur est true lorsque l'application connectée est installée dans l'organisation de l'utilisateur et que le jeton d'accès de l'utilisateur a été créé à l'aide d'un flux OAuth. Si l'application connectée n'est pas installée, la réponse ne contient pas cette valeur. Lors de l'analyse de la réponse, vérifiez l'existence et la valeur de cette propriété.
mobile_policy

Des valeurs spécifiques pour la gestion d'une application connectée mobile. Ces valeurs sont disponibles uniquement lorsque l'application connectée est installée dans l'organisation de l'utilisateur actif, l'application a une valeur d'expiration de session définie et le code PIN a une valeur de longueur définie.

  • screen_lock : le délai d'attente avant le verrouillage de l'écran en cas d'inactivité.
  • pin_length : la longueur du numéro d'identification requis pour accéder à l'application mobile.
push_service_type

apple si l'application connectée est enregistrée dans Apple Push Notification Service (APNS) pour les notifications push iOS. androidGcm si elle est enregistrée dans Google Cloud Messaging (GCM) pour les notifications push Android.

Le type de la valeur de réponse est un tableau.

custom_permissions

Lorsqu'une demande contient le paramètre d'étendue custom_permissions, la réponse contient une carte contenant les autorisations personnalisées de l'organisation associée à l'application connectée. Si l'application connectée n'est pas installée dans l'organisation ou n'est associée à aucune autorisation personnalisée, la réponse ne contient pas de carte custom_permissions.

Voici un exemple de requête :

http://MyDomainName.my.salesforce.com/services/oauth2/authorize?response_type=token&client_
          id=3MVG9lKcPoNINVBKV6EgVJiF.snSDwh6_2wSS7BrOhHGEJkC_&redirect_uri=http://www.example.org/qa/security/oauth
          /useragent_flow_callback.jsp&scope=api%20id%20custom_permissions
         

Voici le bloc JSON dans la réponse de l'URL d'identité :

"custom_permissions":
           {
           "Email.View":true,
           "Email.Create":false,
           "Email.Delete":false
           }
          

Les réponses possibles de Salesforce à une demande non valide sont les suivantes :

Code d'erreur Problème de demande
403 (forbidden) — HTTPS_Required HTTP
403 (forbidden) — Missing_OAuth_Token Jeton d'accès manquant
403 (forbidden) — Bad_OAuth_Token Jeton d'accès non valide
403 (forbidden) — Wrong_Org Utilisateurs dans une organisation différente
404 (not found) — Bad_Id ID d'utilisateur ou d'organisation non valide ou incorrecte
404 (not found) — Inactive Utilisateur désactivé ou organisation inactive
404 (not found) — No_Access Défaut d'accès approprié à l'organisation ou aux informations pour l'utilisateur
404 (not found) — No_Site_Endpoint Demander un point de terminaison non valide d'un site
404 (introuvable) — Erreur interne Aucune réponse du serveur
406 (not acceptable) — Invalid_Version Version non valide
406 (not acceptable) — Invalid_Callback Rappel non valide
 
Chargement
Salesforce Help | Article