Découverte des principes de sécurité et d’authentification
Objectifs de formation
Une fois cette unité terminée, vous pourrez :
- Identifier les méthodes de sécurité et d’authentification utilisées dans les applications Salesforce
- Décrire l’utilisation des applications clientes externes pour l’intégration d’applications mobiles au serveur Salesforce
- Expliquer la terminologie OAuth de base
- Décrire le flux d’événements de l’authentification OAuth et de la sécurité grâce à un code PIN
Sécurisation et authentification de votre application mobile avec OAuth 2.0
Une authentification sécurisée est essentielle à l'exécution d'applications professionnelles sur les appareils mobiles. OAuth 2.0, le protocole standard du secteur, permet une autorisation sécurisée pour accéder aux données d'un client, sans indiquer de nom d'utilisateur et de mot de passe. Il est souvent décrit comme la clé valet d’accès au logiciel. Une clé valet limite l'accès à certaines fonctionnalités de votre voiture. Par exemple, un voiturier ne peut pas ouvrir le coffre ou la boîte à gants avec la clé valet.
Les développeurs d'applications mobiles peuvent facilement et rapidement intégrer la mise en œuvre d'OAuth 2.0 à Salesforce. Cette mise en œuvre utilise un affichage HTML pour recueillir le nom d'utilisateur et le mot de passe, qui sont ensuite envoyés au serveur. Ce dernier émet alors un jeton de session ainsi qu'un jeton d'actualisation permanent, qui sont stockés sur l'appareil en prévision des futures interactions.
Pour se connecter à Salesforce, une application mobile utilise une application cliente externe Salesforce. Une application cliente externe permet au développeur et à l’administrateur de contrôler comment l’application se connecte et qui y a accès. Ainsi, une application cliente externe peut restreindre l’accès à un groupe de clients, définir ou autoriser une plage IP, etc.
Familiarisation avec la terminologie OAuth
Si vous êtes perdu(e), cette liste peut vous aider à retrouver votre chemin. Cet ensemble d’étiquettes peut contribuer à votre réussite avec OAuth.
Clé consommateur |
Valeur utilisée par le consommateur (dans ce cas précis, l'application du kit de développement mobile) afin de s'identifier dans Salesforce. Désignée par |
Jeton d'accès |
Valeur utilisée par le consommateur pour accéder au nom de l'utilisateur à des ressources protégées, au lieu d'utiliser les identifiants Salesforce de l'utilisateur. Le jeton d’accès est un ID de session et peut être utilisé directement. |
Jeton d'actualisation |
Jeton utilisé par le client pour obtenir un nouveau jeton d'accès, sans nouvelle approbation de l'accès par l'utilisateur final. |
Code d'autorisation |
Jeton de courte durée représentant l'accès accordé par l'utilisateur final. Le code d'autorisation est utilisé pour obtenir un jeton d'accès et un jeton d'actualisation. |
Application cliente externe |
Application externe à Salesforce qui utilise le protocole OAuth pour vérifier l'utilisateur Salesforce et l'application externe. |
Flux d'authentification OAuth2
Le flux d'événements au cours d'une autorisation OAuth dépend de l'état de l'authentification sur l'appareil.
Flux d’autorisation initiale
- Le client ouvre l'application Mobile SDK.
- Une invite d'authentification s'affiche.
- Le client saisit un nom d'utilisateur et un mot de passe.
- L’application envoie les identifiants du client à Salesforce et reçoit un ID de session confirmant la réussite de l’authentification.
- Le client accepte la requête de l'application pour accorder l'accès à l'application.
- L'application démarre.
Autorisation en cours
- Le client ouvre une application mobile.
- Si l'ID de la session est actif, l'application démarre immédiatement. Si l'ID de la session est obsolète, l'application utilise le jeton d'actualisation de la première autorisation afin d'obtenir un ID de session actualisé.
- L'application démarre.
Sécurité par verrouillage d’application
Pour plus de sécurité, les applications clientes externes peuvent être configurées pour se verrouiller après avoir fonctionné en arrière-plan pendant une durée déterminée. Pour déverrouiller l’application, l’utilisateur est invité à répondre à une demande d’authentification du système d’exploitation par des moyens biométriques ou cryptographiques, tels qu’un code PIN ou un code secret.
Pour utiliser la protection par verrouillage d’application, le développeur doit cocher la case Screen Lock (Verrouillage de l’écran) lors de la création de l’application cliente externe. Les administrateurs d’applications mobiles ont alors la possibilité de personnaliser la durée du délai d’expiration.
Flux du serveur Web OAuth2
Pour renforcer la sécurité, Salesforce recommande d’utiliser le flux du serveur Web, car il intègre la technologie PKCE (Proof Key Code Exchange). Pour plus d’informations, consultez l’article Flux du serveur Web OAuth 2.0 pour l’intégration d’applications Web.
Flux de l'agent-utilisateur OAuth2
Avec le flux de l’agent-utilisateur, l’application cliente externe, qui intègre l’application client à l’API Salesforce, reçoit le jeton d’accès en tant que redirection HTTP. L’application cliente externe demande au serveur d’autorisation de rediriger l’agent-utilisateur vers un serveur Web ou une ressource locale accessible.
Le serveur Web peut extraire le jeton d’accès de la réponse et le transmettre à l’application cliente externe. Par sécurité, la réponse du jeton est fournie sous forme de fragment de hashtag (#) dans l’URL. Ce format évite la transmission du jeton au serveur ainsi qu’à d’autres serveurs dans des en-têtes référents.
Avertissement
Le jeton d’accès étant codé dans l’URL de redirection, il peut être exposé à l’utilisateur et aux autres applications sur l’appareil.
Valeurs de paramètre d'étendue
OAuth nécessite que la configuration de l'étendue soit effectuée pour le serveur comme pour le client. L'accord entre les deux parties définit le contrat d'étendue.
-
Côté serveur : définit les autorisations d’étendue d’une application cliente externe sur le serveur Salesforce. Ces paramètres permettent de déterminer les niveaux d’accès que les applications clientes, comme les applications du kit de développement mobile, sont en droit de demander. Faites en sorte que les réglages OAuth de votre application cliente externe correspondent au minimum aux spécifications de votre code. Pour la plupart des applications, refresh_token, web et api suffisent. Pour consulter la liste complète des étendues, reportez-vous à l’article Jetons et étendues OAuth.
-
Côté client : spécifie les demandes d’étendue dans votre application Mobile SDK. Les demandes d’étendue du client doivent être un sous-ensemble des autorisations d’étendue de l’application cliente externe. Dans Mobile SDK 13.2 et les versions ultérieures, si aucune étendue n’est spécifiée, toutes les étendues configurées sur le serveur sont accordées.
Applications clientes externes
Les applications clientes externes sont des infrastructures empaquetables permettant d’intégrer une application tierce à Salesforce à l’aide d’API et de protocoles de sécurité. En outre, elles comprennent des améliorations structurelles visant à maintenir des rôles d’utilisateur distincts et à permettre la création de packages gérés de deuxième génération. Salesforce vous recommande d’utiliser des applications clientes externes et de migrer les applications connectées locales existantes vers des applications clientes externes locales.
Création d’une application cliente externe
Vous pouvez facilement créer une application cliente externe, mais vous devez disposer des droits d’administrateur. Dans votre organisation Developer Edition ou Trailhead Playground, ces autorisations vous sont automatiquement accordées.
- Dans votre Trailhead Playground ou organisation Developer Edition, rendez-vous dans Setup (Configuration).
- Dans Setup (Configuration), saisissez «
Apps» (Applications) dans la zone de recherche rapide, puis sélectionnez External Client Apps Manager (Gestionnaire des applications clientes externes).
- Sélectionnez New External Client App (Créer une application cliente externe).
- Sous Basic Information (Informations de base), remplissez le formulaire comme suit.
- External Client App Name (Nom de l’application cliente externe) :
Trailhead Intro
- API Name (Nom d’API) : acceptez la valeur proposée.
- Contact Email (E-mail du contact) : saisissez votre adresse e-mail.
- Distribution State (État de distribution) : pour développer une application cliente externe pour votre organisation locale, sélectionnez Local. Pour développer une application cliente externe pour la création de packages et la distribution, définissez l’état de distribution sur Packaged (En package).
- Sous API (Enable OAuth Settings) (Activer les paramètres OAuth), cochez Enable OAuth (Activer les paramètres OAuth).
- Définissez l’URL de rappel sur n’importe quelle chaîne d’URL, réelle ou fictive, par exemple
monappexemple://auth/success. Si la saisie automatique offre une suggestion, ne l'acceptez pas. Collez à la place l’URL de rappel.
- Sous Available OAuth Scopes (Étendues OAuth disponibles), sélectionnez :
-
Gérer les données des utilisateurs via des API (API)
-
Gérer les données des utilisateurs via des navigateurs Web (Web)
-
Exécuter des requêtes à tout moment (refresh_token, offline_access)
-
Gérer les données des utilisateurs via des API (API)
- Cliquez sur la flèche d’ajout pour déplacer chaque sélection dans Selected OAuth Scopes (Étendues OAuth sélectionnées). Cet ensemble minimal d'étendues fonctionne correctement pour la plupart des applications Mobile SDK.
- Dans la rubrique Security (Sécurité) :
- Décochez l’option Require Secret for Web Server Flow (Nécessite un secret pour le flux serveur Web).
- Décochez l’option Require Secret for Refresh Token Flow (Nécessite un secret pour le flux du jeton d’actualisation).
- (Recommandé) Cochez l’option Issue JSON Web Token (JWT)-based access tokens for named users (Émettre des jetons d’accès basés sur JSON Web Token (JWT) pour des utilisateurs nommés).
- Décochez l’option Require Secret for Web Server Flow (Nécessite un secret pour le flux serveur Web).
- Cliquez sur Créer.
Vous connaissez l'architecture et la sécurité Mobile SDK, il est temps de vous exercer avec Mobile SDK. Pour commencer, relevez le défi ci-dessous qui nécessite seulement une organisation Developer Edition ou Trailhead Playground. Nous recommandons ensuite d’obtenir le badge Configuration de vos outils de développeur Mobile SDK.
