DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Web Dev Zone»Sécurité basée sur des jetons : applications angulaires, partie 2
    Web Dev Zone

    Sécurité basée sur des jetons : applications angulaires, partie 2

    octobre 15, 2021
    Sécurité basée sur des jetons : applications angulaires, partie 2
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    introduction

    Dans le post précédent sur le thème de la sécurité basée sur les jetons, nous avons créé un Point de terminaison de l’API et protégé (en utilisant Autoriser attribut) avec IdentitéServeur. Ensuite, nous avons mis en place une application Angular simple avec un AuthService utiliser oidc-client une bibliothèque. Nous avons également créé quelques composants angulaires à la fin du post précédent, ainsi que deux boutons pour connexion/déconnexion fins dans appComponent, puis câblé la méthode suivante avec des événements de clic :

    Deux boutons à des fins de connexion/déconnexion dans appComponent, puis câblé la méthode suivante avec des événements de clic

    Aujourd’hui, nous allons continuer à partir du message précédent et terminer le processus de connexion/déconnexion. Nous verrons comment la bibliothèque cliente OIDC permet de mettre en œuvre très facilement les flux de redirection complexes prêts à l’emploi.

    Alors, commençons et complétons le Se déconnecter code de la méthode en premier :

    Code de méthode de déconnexion

    Comme vous pouvez le remarquer, depuis AppComponent Se déconnecter() méthode, nous déléguons simplement le travail à authService, qui utilisera Client OIDC bibliothèque pour que cela se produise. Regardons cela ensuite.

    Achèvement du processus de connexion/déconnexion

    À partir des boutons de l’interface utilisateur AppComponent, nous appelons des méthodes dans AuthService. Ici encore, nous appelons simplement des méthodes appropriées sur gestionnaire d’utilisateurs objet et qui fera tout le gros du travail pour nous :

    Méthodes d'appel dans AuthService

    Remarquez, le mot Réorienter dans les deux méthodes. Oui, ce code redirigera l’utilisateur vers IDP, où il/elle sera connecté/déconnecté au niveau IDP, et une fois cela terminé, l’utilisateur est redirigé vers l’application angulaire.

    Gestion des rappels de redirection

    Lorsque l’utilisateur est redirigé vers l’application angulaire, nous devons ajouter du code angulaire supplémentaire pour permettre à l’application angulaire de gérer la connexion/déconnexion processus d’achèvement.

    Pour cela, j’ai créé les deux méthodes suivantes dans AuthService.ts:

    Deux méthodes dans AuthService.ts

    Le code est explicite : nous appelons des méthodes appropriées sur gestionnaire d’utilisateurs objet de gérer le Rediriger les rappels. Donc TerminerConnexion sera appelé (en utilisant connexion-rappel.component, comme nous le verrons plus loin dans cet article) à la fin du connexion traiter (après que l’utilisateur ait entré le nom d’utilisateur/mot de passe sur l’IDP). Cette méthode génère également une notification sur la connexion de l’utilisateur.

    Semblable à cela, terminerDéconnexion sera appelé à la fin de la processus de déconnexion (à l’aide de déconnexion-rappel.component, que nous verrons ensuite). Ce code s’éclaircit également utilisateur propriété sur authService.

    Composants de rappel de connexion/déconnexion

    Voici les composants pour gérer les rappels de connexion/déconnexion. IDP redirigera les utilisateurs vers ces composants dans le cadre du flux d’autorisation :

    Redirection IDP

    Le code suivant montre Se connecterRappel composant:

      Composant SigninCallback

    Comme vous pouvez le voir, nous appelons le completeLogin() méthode, que nous avons créée précédemment dans AuthService, et une fois terminé, nous dirigeons l’utilisateur vers racine URL (en supprimant également signinRedirect de la pile de navigation arrière du navigateur). Avis, pour le modèle, c’est juste un div vide.

    Ensuite, voyons le code pour le rappel de déconnexion composant:

    Composant SignoutCallback

    Ceci est très similaire au composant SigninCallback, un div vide, et terminerDéconnexion appel de méthode.

    À ce stade, notre fonctionnalité de connexion/déconnexion est en place. Maintenant, configurons STS pour autoriser le client angulaire en ajoutant client informations comme indiqué ci-après.

    Configurer IDP avec les informations client angulaires

    Voici la configuration du client (Config.cs) dans l’IDP :

    Configuration du client (Config.cs) dans l'IDP

    Nous avons discuté de toutes ces informations dans les articles précédents de cette série. Avis avec le RedirectionUris et PostLogoutRedirectUris, nous devons créer ces routes dans notre application angulaire et connecter et déconnecter les composants de rappel que nous avons créés précédemment afin que les redirections puissent se produire comme prévu.

    Routes angulaires pour les URI de redirection

    Mettons à jour les informations de routage dans l’application angulaire :

    Informations de routage dans l'application angulaire

    Notez que les chemins sont configurés comme configurés dans IDP et les composants que nous avons créés précédemment pour le processus de connexion/déconnexion. C’est ainsi qu’ils se sont tous câblés et travaillent ensemble pour mettre en œuvre le flux.

    Tester l’application

    Testons l’application, en exécutant des projets .NET Core (IDP, API, etc.) et une application Angular. Si nous naviguons jusqu’à l’URI racine de l’application angulaire, l’écran suivant apparaît :

    Démo Angular App

    Maintenant, cliquez sur le connexion bouton et nous sommes redirigés vers IDP (notez la barre d’adresse):

    Redirigé vers IDP (notez la barre d'adresse)

    Ici, entrez le nom d’utilisateur et le mot de passe (vous pouvez utiliser les utilisateurs de test que nous avons configurés dans les messages précédents) et cliquez sur le bouton Connexion bouton. Nous sommes redirigés vers l’application Angular comme indiqué ci-dessous :

    Déconnexion de l'application Demo Angular

    Ainsi, notre flux de connexion/déconnexion fonctionne comme prévu. Si nous ouvrons la fenêtre du navigateur (stockage de session), nous pouvons voir que les informations utilisateur suivantes sont disponibles :

    Stockage des sessions

    Maintenant, quand je clique sur le Se déconnecter bouton, l’utilisateur est redirigé vers IDP à des fins de déconnexion :
    Écran de déconnexion IdentityServer4

    Autoriser les appels à l’API

    Nous pouvons nous connecter/déconnecter avec succès. Connectons-nous à nouveau et essayons d’accéder à la page Produits. Vous remarquerez que nous ne sommes toujours pas en mesure de voir les données des produits et que les fenêtres de la console nous montrent un 401 Erreur:

    Liste des produits de l'application de démonstration angulaire

    Cela se produit même si nous avons jeton d’accès d’IDP, nous ne l’avons pas encore transmis en tant qu’en-tête HTTP à l’API lors des appels HTTP. Cela implique généralement l’introduction d’un intercepteur HTTP. Nous aborderons cela dans le prochain article, ainsi que d’autres améliorations.

    Vous pouvez télécharger le code source à partir de ce référentiel git. Nous continuerons dans le prochain post. Si vous avez des commentaires ou des questions, faites-le moi savoir. Jusqu’à la prochaine fois, Happy Coding.

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.