L'authentification des clients d'API
Stratégies Utilisateur -> Application intermédiaire -> API
Stratégie 1
- L’application intermédiaire possède le compte admin de l’API
- L’application intermédiaire authentifie “indépendemment” l’utilisateur et est garant de la sécurité des traitement
- Pour l’API, c’est un admin qui s’est connecté même si l’utilisateur final a des droits très limités
- Faille sur l’application intermédiaire = élévation de privilèges
Stratégie 2
- L’application intermédiaire demande une information d’authentification acceptée par l’API
- (L’application intermédiaire peut s’en servir pour ses propres traitements)
- L’application intermédiaire transmet cette information à l’API
- Pour l’API, c’est l’utilisateur qui s’est connecté et pas un admin
- L’application intermédiaire ne peut plus être responsable d’attaque par élévation de privilège
Transférer une authentification ?
- L’authentification repose sur un secret
- Plus un secret a de gardien moins il est gardé
- Transférer le secret = mauvaise idée
- Une seule application va gérer ce secret, et va établir un “jeton” ou “token” qui garantie l’identité
- Les autres applications se transmettent ce token
Authentification avec Javascript
Frontend en javascript (tout se passe dans le navigateur)
AUCUNE protection n’est nécessaire
Pourquoi on authentifie en js ?
- Affichage
- Transmettre l’authentification au backend
Stratégie 1 innaplicable
On ne peut pas garder un secret en javascript
La javascript ne va pas vraiment contôler l’authentification mais la stocker et la transmettre
Aspect sécurité : Stockage du jeton ?
Un script R (client lourd en général) doit se connecter à une API ?
- Il s’agit également de récupérer une information d’authentification pour la transmettre
- On n’est plus dans un navigateur, seul le mode de récupération du token va changer
Un batch doit se connecter à une API authentifiée ?
- Pas d’utilisateur final
- => pseudo “Stratégie 1” : on va se connecter à l’API au nom de l’application et non pas au nom d’un utilisateur
- Cependant on construit la Stratégie 2 pour les situations “utilisateurs” et on adapte la solution batch à l’architecture “stratégie 2”
- => on utilise quand même la solution token