1 pièce(s) jointe(s)
Architecture Microservice - WebApi d'authentification
Bonjour,
Je cherche à mettre en place une architecture Microservices pour une solution applicative développée en C# / Asp.Net MVC.
Cependant, bien que j'arrives à conceptualiser (voir diagramme de séquence joint) les interactions entre mes services "métier", mon service d'authentification et mon service d'autorisation, je n'arrive pas a comprendre techniquement comment le mettre en œuvre.
Pièce jointe 287703
Pour le service d'authentification, je suis parti sur une simple WebApi avec authentification par compte utilisateur individuels.
Je me doute que je peux le faire manuellement avec HttpClient pour chaque requête, mais le but de la manœuvre est d'automatiser tout ça.
Mais mon idée serai de pouvoir continuer à me servir de l'attribut "Authorize" en le personnalisant pour qu'il prenne en paramètre : "Contrôleur" et "Action".
Ainsi dans mon service d'autorisation, je regarde pour l'application appelante, si l'utilisateur fournit par le service d'authentification est autorisé à appeler l'action donnée du contrôleur donné.
En gros, toute la partie en rouge sur le diagramme, serait exécutée par la simple utilisation de l'attribut "Authorize" sur la méthode appelée.
Sauf que la dedans, je ne vois pas comment mes services métiers peuvent savoir que l'attribut Authorize doit aller vérifié si l'utilisateur est connecté dans un autre service.
Je pourrais créer un nouvel attribut Authorize qui hérite de celui du framework (c'est ce que j'ai fait pour avoir le contrôleur et l'action), mais je ne sais pas comment, depuis le code de cet attribut rediriger vers une page de connexion en cas d'échec de l'authentification.
D'ailleurs, je ne vois même pas où je dois implémenter mes vues d'inscription / connexion, pour ne pas avoir à les redévelopper pour chaque service métier.
Est-ce clair ? Je suis moi-même un peu perdu dans ma tête.
Peut-être que je me prends la tête et que AspNet Identity prévoit déjà la connexion multi-applications. Mais dans ce cas, avez-vous des tutos à me donner, je n'en trouve aucun.
A bientôt,
TL
Architecture Microservice - WebApi d'authentification
Merci Matt,
Donc si je comprend bien, je peut tout coder dans mon attribut.
Mais où je met mes pages de connexion / inscription ... avec mon service d'authentification. C'est lui qui fourni les vues ?
Et comment je redirige vers elles depuis le code de mon attribut ?
Et je ne suis pas sur de savoir comment récupérer mon token depuis l'attribut non plus. Je passe par un singleton ou une classe statique avec une variable globale ? parce que je n'ai pas accès à mon contrôleur, ni à la session.
Je vais regarder la piste du middleware également. Cela implique t-il vraiment de grosse différence de performances ?
Je suis parti sur l'attribut au départ parce que je ne trouvait rien de mieux, mais il me semble que ça fait beaucoup d'appels sous-jacents pour chaque appel d'un service.
A+,
TL