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

Shared architecture

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

Firewall architecture

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

92
demandé sur Community 2015-04-15 11:10:32

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.

OAuth 2 Model

Exemple de conception de Microservice enchaîné Architecture Model

ressources:

49
répondu Tiarê Balbi 2016-09-20 16:11:38

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"

  1. authentifier contre fournisseur D'identité
  2. garder le token d'accès dans le cookie
  3. accéder aux pages de webapp
  4. 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é

enter image description here

1
répondu Sandeep Nair 2018-03-07 23:48:00

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

0
répondu Vijay Parmar 2017-08-17 08:42:47
Le modèle de passerelle

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 /

0
répondu ManishSingh 2018-01-09 20:45:04