Stratégie d'authentification Microservice
j'ai du mal à choisir une stratégie d'authentification décente/sécurisée pour une architecture microservice. Le seul message que j'ai trouvé sur le sujet est celui-ci: inscription simple dans L'Architecture Microservice
Mon idée est d'avoir dans chaque service (par exemple. authentification, messagerie, notification, profil, etc.) une référence unique à chaque utilisateur (tout à fait logiquement puis son user_id
) et la possibilité d'obtenir l'utilisateur courant de id
si connecté.
de mes recherches, je vois qu'il y a deux stratégies possibles:
1. Architecture partagée
dans cette stratégie, l'application d'authentification est un service parmi d'autres. Mais chaque service doit être en mesure de faire la conversion session_id
=> user_id
donc il doit être très simple. C'est pourquoi J'ai pensé à Redis, qui stockerait la clé: valeur session_id:user_id
.
2. Architecture pare-feu
dans cette stratégie, le stockage de session n'a pas vraiment d'importance, car il n'est géré que par l'application d'authentification. Ensuite, le user_id
peut être transmis à d'autres services. J'ai pensé à rail + Device (+Redis ou mem-cached, ou cookie storage,etc.) mais il y a des tonnes de possibilités. La seule chose qui importe est que le Service X n'aura jamais besoin de authentifier l'utilisateur.
comment ces deux solutions se comparent-elles en termes de:
- sécurité
- robustesse
- évolutivité
- facilité d'utilisation
ou peut-être suggérez-vous une autre solution que je n'ai pas mentionnée ici?
j'aime mieux la solution #1 mais je n'ai pas trouvé beaucoup de défaut une mise en œuvre qui me garantirait que je vais dans la bonne direction.
j'espère que ma question ne sera pas Close. Je ne sais pas vraiment d'autre endroit pour la poser.
Merci d'avance
4 réponses
D'après ce que j'ai compris, une bonne façon de le résoudre est d'utiliser le protocole OAuth 2 (vous pouvez trouver un peu plus d'informations à ce sujet sur http://oauth.net/2/ )
lorsque votre utilisateur se connecte à votre application, il obtiendra un token et avec ce token il pourra envoyer à d'autres services pour les identifier dans la demande.
Exemple de conception de Microservice enchaîné
ressources:
brève réponse: Utilisez Oauth2.L'authentification basée sur un jeton 0 kind, qui peut être utilisée dans n'importe quel type d'applications comme une webapp ou une application mobile. La séquence des étapes à suivre pour une application web serait alors 151910920"
- authentifier contre fournisseur D'identité
- garder le token d'accès dans le cookie
- accéder aux pages de webapp
- appel, les services de
Diagramme ci-dessous illustre les composants qui seraient nécessaires. Une telle architecture séparant le web et les API de données donnera une bonne évolutivité, résilience et stabilité
vous pouvez utiliser serveur d'identité 4 à des fins d'authentification et d'autorisation
vous devez utiliser Architecture pare-feu donc vous avez plus de contrôle sur sécurité, robustesse ,évolutivité et facilité d'utilisation
de l'API doit être utilisé pour mettre en œuvre ceci en utilisant OpenID Connect. L'Utilisateur sera authentifié par IDP et obtiendra le JWT du serveur d'autorisation. Maintenant, API gateway system peut stocker ce token dans la base de données Redis et configurer le cookie sur le navigateur. API gateway utilisera le cookie pour valider la demande de l'utilisateur et enverra le token aux Microservices.
API passerelle agit comme un point d'entrée unique pour tous les types de clients applications comme public java l'application client script, l'application web traditionnelle, l'application mobile native et les applications client tiers dans L'architecture Microservice.
vous pouvez trouver plus de détails à ce sujet sur http://proficientblog.com/microservices-security /