web-dev-qa-db-fra.com

Stratégie d'authentification de Microservice

J'ai de la difficulté à choisir une stratégie d'authentification décente/sécurisée pour une architecture de microservice. Le seul SO message que j'ai trouvé sur le sujet est celui-ci: Single Sign-On dans Microservice Architecture

Mon idée ici est d’avoir dans chaque service (par exemple, authentification, messagerie, notification, profil, etc.) une référence unique à chaque utilisateur (assez logiquement puis son user_id) et la possibilité d’obtenir l’utilisateur actuel id si connecté.

D'après 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 pouvoir effectuer la conversion session_id => user_id afin que la conversion soit simple. C'est pourquoi j'ai pensé à Redis, qui stockerait la clé: valeur session_id:user_id.

2. Architecture du pare-feu

Firewall architecture

Dans cette stratégie, le stockage de session n'a pas vraiment d'importance, car il est uniquement géré par l'application d'authentification. Ensuite, le user_id peut être transféré à d'autres services. J'ai pensé à Rails + Devise (+ Redis ou mem-cached, ou stockage de cookies, etc.), mais les possibilités sont infinies. La seule chose qui compte est que Service X n'aura jamais besoin d'authentifier l'utilisateur.


Comment ces deux solutions se comparent-elles en termes de:

  • sécurité
  • robustesse
  • évolutivité
  • facilité d'utilisation

Ou peut-être suggéreriez-vous une autre solution que je n'ai pas mentionnée ici?

J'aime mieux la solution n ° 1, mais je n'ai pas trouvé beaucoup d'implémentation par défaut qui me garantirait que je vais dans la bonne direction.

J'espère que ma question ne sera pas fermée. Je ne sais pas vraiment où le demander.

Merci d'avance

115
Augustin Riedinger

D'après ce que j'ai compris, un bon moyen de le résoudre consiste à utiliser le protocole OAuth 2 (vous pouvez trouver un peu plus d'informations à ce sujet sur http : //oauth.net/2/ )

Lorsque votre utilisateur se connectera à votre application, il recevra un jeton et, avec ce jeton, il pourra l'envoyer à d'autres services pour l'identifier dans la requête.

OAuth 2 Model

Exemple de conception de microservice chaîné Architecture Model

Ressources:

55
Tiarê Balbi

Réponse courte: Utilisez l'authentification basée sur un jeton type Oauth2.0, qui peut être utilisée dans tout type d'application, telle qu'une application Web ou une application mobile. La séquence des étapes à suivre pour une application Web serait alors la suivante:

  1. s'authentifier auprès du fournisseur d'ID
  2. conserver le jeton d'accès dans un cookie
  3. accéder aux pages dans webapp
  4. appeler les services

Le diagramme ci-dessous décrit les composants nécessaires. Une telle architecture séparant le Web et l’API des données donnera une bonne évolutivité, résilience et stabilité

enter image description here

1
Sandeep Nair

Le modèle de passerelle API doit être utilisé pour implémenter cela à l'aide d'OpenID Connect. L'utilisateur sera authentifié par IDP et obtiendra le jeton JWT du serveur d'autorisation. Maintenant, le système de passerelle API peut stocker ce jeton dans la base de données Redis et définir le cookie sur le navigateur. La passerelle API utilisera le cookie pour valider la requête de l'utilisateur et enverra le jeton au Microservices.

API Gateway agit comme un point d’entrée unique pour tous les types d’applications client telles que l’application client script Java publique, l’application Web traditionnelle, l’application mobile native et les applications client tierces de l’architecture Microservice.

Vous pouvez trouver plus de détails à ce sujet sur http://proficientblog.com/microservices-security/

0
ManishSingh

vous pouvez utiliser idenitty server 4 à des fins d'authentification et d'autorisation

vous devez utiliser une architecture de pare-feu , ce qui vous permet de mieux contrôler la sécurité, la robustesse, l’évolutivité et la facilité d’utilisation

0
Vijay Parmar