Sécurisez et simplifiez vos appels API grâce aux Named Credentials

Par 

6 minutes de lecture

Parlons de Named Credentials. Nous vivons dans un monde numérique où la concurrence est de plus en plus vitale pour la survie des entreprises, il est en conséquence extrêmement important d’améliorer l’efficacité des systèmes informatiques qui ne peuvent à présent fonctionner de manière isolée.

Que vous soyez développeur ou App Builder, vous aviez sûrement eu besoin de communiquer avec des systèmes externes à Salesforce. Afin d’envoyer ou de récupérer des informations nécessaires à la réalisation de vos opérations quotidiennes.

Salesforce facilite justement l’interaction avec d’autres systèmes, appareils, programmes et données. À travers des appels API de plus en plus simplifiés et sécurisés.

Qu'est-ce qu'une API ?

API signifie Application Programming Interface. Il s’agit d’un ensemble de protocoles et d’outils qui permettent à différents systèmes et logiciels de communiquer et d’échanger des données entre eux.

Ces protocoles définissant comment ces systèmes peuvent interagir les uns avec les autres, quelles informations peuvent être consultées et quelles opérations peuvent être effectuées.

Salesforce propose justement une API qui permet d’échanger des informations avec d’autres systèmes. Tels que des ERP et d’autres plateformes CRM. Elle permet par exemple de récupérer, de créer, de mettre à jour et de supprimer des enregistrements, d’exécuter une logique personnalisée et d’accéder aux métadonnées.

Se connecter à une API

Maintenant que nous avons présenté le contexte de notre sujet, nous allons voir comment Salesforce permet de simplifier et sécuriser l’interaction grâce à ces API.

En effet, avant de pouvoir communiquer avec ces systèmes externes, la première étape consiste à nous connecter aux API qu’ils proposent.

Une étape qui peut être parfois très compliqués à causes de certains protocoles très strictes. Cette étape peut parfois également poser des soucis de sécurité comme certains systèmes qui proposent une simple authentification avec un simple nom d’utilisateur et un mot passe unique.

Named Credentials

A chaque fois que nous souhaitons nous connecter à une API, nous devons prendre en considération plusieurs paramètres :

  •  Quels sont les utilisateurs qui vont pouvoir se connecter à ce service (user intégration ou par utilisateur spécifique) ?
  • Quelle API appeler en fonction de l’environnement Salesforce (production, préproduction, recette, etc.) ?
  •  Surtout, quel mécanisme d’authentification nous devons utiliser pour nous connecter (connexion basic avec un mot de passe, OAuth 2.0 ou une connexion SSL par exemple) ?

Basic Auth

Un des mécanismes d’authentification souvent proposé par de nombreux systèmes qui exposent leur API est le Basic Auth. Il suffit d’utiliser un nom d’utilisateur et un mot de passe à déclarer directement dans le code Apex comme dans cet exemple:

				
					HttpRequest req = new HttpRequest();
req.setMethod('GET');
req.setEndpoint('https://My_EndPoint_Example.com/services/data/v39.0/sobjects/Texei__c/api');

// Le username et password pour accéder à l'API
// Les informations de connexion ainsi que d'eventuels params
String username = Label.Username;
String password = Label.Password;

Blob headerValue = Blob.valueOf(username + ':' + password);
String authorizationHeader = 'BASIC ' + EncodingUtil.base64Encode(headerValue);
req.setHeader('Authorization', authorizationHeader);

Http http = new Http();
HttpResponse res = http.send(req);  
System.debug(res.getBody());

				
			

Vous pensez surement en voyant ce code qu’il s’agit d’une très bonne solution. Très simple à utiliser puisque ça nécessite pas de clé d’authentification ou de génération de Token de connexion. Mais c’est évidemment une très mauvaise idée.

Cela est dû à plusieurs raisons:

  • Le mot de passe peut changer : dans beaucoup de systèmes le mot de passe expire après un certain temps (90 jours par exemple), dans ce cas nous devons changer continuellement notre implémentation.
  • Difficile à maintenir : nous devons souvent utiliser différents mots de passe sur chaque environnement Salesforce (Recette, Production, QA, etc.)
  • Absence de sécurité : si nous mettons le mot de passe dans un répertoire de développement qui est stocké sur GIT par exemple, toute personne accédant à ce répertoire pourrait voir ce mot de passe.

Comment ça marche ?

Vous en doutez bien, la meilleur solution pour utiliser ce mécanisme de connexion est de créer un Named Credential.  Alors, comment tout cela fonctionne ?

Pour configurer notre connexion grâce au Named Credential, nous devons passer par plusieurs étapes:

1 –  Créer l’External Credential qui sera notre en-tête (header). Et qui contiendra notre nom d’utilisateur et mot de passe combinés à l’aide d’un chiffrement base64:

 2 – Ajouter un permission set pour déterminer les autorisations nécessaires:

 3 – Créer un en-tête personnalisé avec une formule pour une combinaison chiffrée de nom d’utilisateur-mot de passe. Le nom à mettre dans l’en-tête  est « Authorization »:

				
					{!'Basic ' & BASE64ENCODE(BLOB($Credential.My_Basic_Connexion.Username & ':' & $Credential.My_Basic_Connexion.Password))}

				
			

4  – Après avoir sauvegardé l’External Credential, il faut créer le Named Credential et faire le lien entre les deux:

Nous retrouvons alors la structure de notre schéma présenté précédemment: la connexion vers l’API, l’authentification et les autorisations nécessaires.

5 – Il suffit maintenant de l’appeler dans notre code et la connexion sera faite automatiquement en utilisant les informations qu’on nous avons configurées:

				
					HttpRequest req = new HttpRequest();
req.setEndpoint('callout:My_Named_Credential/Monservice');
req.setMethod('GET');
Http http = new Http();
HTTPResponse res = http.send(req);
System.debug(res.getBody());
				
			

7 – Pour simplifier encore plus, Salesforce permet de récupérer les metadatas de cette configuration en utilisant SFDX:

				
					sfdx force:source:retrieve -m ExternalCredential
sfdx force:source:retrieve -m NamedCredential 
				
			

Et voilà !

Notre connexion à notre API est bien configurée, aucun mot passe n'a été stocké directement dans le code ou dans le repos

Conclusion

L’utilisation de l’intégration de l’API Salesforce présente de nombreux avantages. Elles permettent d’accéder plus facilement et plus rapidement aux données externes.

Le processus d’intégration est assez simple et bien documenté. Ce qui en fait une excellente option pour diverses entreprises. 

Salesforce continue en conséquence de développer de nouvelles API qui s’appliquent à la fois aux utilisateurs et aux développeurs.

Approfondir le sujet

A lire également sur le blog

Copado

Introduction à Copado

Vous aimeriez avoir une idée de ce qu’est Copado, savoir ce qu’apporte l’outil et le tester éventuellement ? Peut-être souhaiteriez-vous aussi connaître les étapes pour se former dessus ? …
avril 2024
Conseils
Interview-Romain-Quijal-Texeï

Portrait de Texiens : Romain Quijal, Développeur chez Texeï

👋 Découvrez le portrait de Romain Quijal, Développeur chez Texeï ! 🚀 Arrivé il y a un peu plus d’un an chez Texeï, Romain une étoile montante dans l’univers …
avril 2024
Interviews

Comment utiliser le pré-header ?

Comment utiliser le pré-header ? Dans le paysage en constante évolution du marketing numérique, la création d’emails captivants est devenue un véritable art. Chaque élément joue un rôle crucial …
mars 2024
Conseils
Avantages de Salesforce pour les PME

Pourquoi faire de la conduite du changement ? 

D’abord, qu’est-ce que la conduite du changement ? La conduite du changement (aussi appelée change management ou change) sert à accompagner les différentes parties prenantes lors d’une transformation dans …
mars 2024
Conseils
Interview-zoe-texei-1

Portrait de Texiens : Zoé Cadiou, Responsable Marketing Opérationnel

👋 Découvrez le portrait de Zoé Cadiou, Responsable Marketing Opérationnel chez Texeï ! 🚀 Arrivée chez Texeï en tant que Responsable de Communication, Zoé endosse désormais la casquette de Responsable …
février 2024
Interviews
Virgile-Paré-portrait -de-texien

Portrait de Texiens : Virgile Paré, Senior Business Analyst

👋 A l’honneur dans notre portrait de texiens, Virgile Paré, Senior Business Analyst, Spécialiste CRM-Analytics, et Manager chez Texeï ! 🚀 Arrivé il y a deux ans maintenant, Virgile …
février 2024
Interviews