Étape 1. Configuration
AuthConfig qui contiendra différentes valeurs de configuration. Placez cette interface dans un fichier nommé auth0-variables.ts.
WebAuth de auth0.js peut être créée dans ce service.
- login : appelle
authorized’auth0.js, ce qui déclenche - handleAuthentication : recherche un résultat d’authentification dans le fragment de l’URL et le traite avec la méthode
parseHashd’auth0.js - setSession : définit le , l’ de l’utilisateur, ainsi que l’heure d’expiration du Jeton d’accès
- logout : supprime les jetons de l’utilisateur du stockage du navigateur isAuthenticated : vérifie si l’heure d’expiration du Jeton d’accès est dépassée
Traiter le résultat de l’authentification
handleAuthentication dans AuthService sert à traiter ce hachage.
Appelez handleAuthentication dans le composant racine de votre application afin que le fragment de hachage d’authentification soit traité au chargement initial de l’application après la redirection de l’utilisateur.
Ajouter le composant Callback
- Cela évite d’avoir à autoriser plusieurs URL de rappel, parfois inconnues
- Cela fournit un emplacement où afficher un indicateur de chargement pendant que votre application établit la session côté client de l’utilisateur
CallbackComponent et ajoutez-y un indicateur de chargement.
assets. Consultez l’exemple téléchargeable pour voir comment cela fonctionne.
Après l’authentification, les utilisateurs seront brièvement dirigés vers la route /callback, où un indicateur de chargement s’affichera. Pendant ce temps, leur session côté client sera établie, puis ils seront redirigés vers la route /home.
Étape 3. Obtenir le profil utilisateur
Extraire les informations du jeton
Cette section explique comment récupérer les informations de l’utilisateur à l’aide du Jeton d’accès et du point de terminaison /userinfo. Vous pouvez aussi simplement décoder l’ID Token à l’aide d’une bibliothèque (assurez-vous d’abord de le valider). Le résultat sera le même. Si vous avez besoin d’informations supplémentaires sur l’utilisateur, envisagez d’utiliser notre Management API.
AuthService existante. Ajoutez une fonction getProfile qui extrait le Jeton d’accès de l’utilisateur du stockage local, puis transmet cet appel à la fonction userInfo pour récupérer ses informations.
Étape 4. Afficher les éléments de l’interface utilisateur de manière conditionnelle selon les scopes
scope renvoyé dans authResult n’est pas vide, cela signifie que l’utilisateur s’est vu accorder un ensemble de scopes différent de celui demandé initialement. Nous devons donc utiliser authResult.scope pour déterminer les scopes accordés à l’utilisateur.
Si le scope renvoyé dans authResult est vide, cela signifie que l’utilisateur a obtenu tous les scopes demandés. Nous pouvons donc utiliser les scopes demandés pour déterminer les scopes accordés à l’utilisateur.
Voici le code que nous avons écrit plus tôt pour la fonction setSession afin d’effectuer cette vérification :
AuthService une fonction que nous pourrons appeler pour déterminer si un utilisateur a obtenu un scope précis :
approve:timesheets. Notez, dans le code ci-dessous, que nous avons ajouté un appel à la fonction userHasScopes pour déterminer si ce lien doit être affiché ou non.
Protéger une route
ScopeGuardService :
ScopeGuardService dans la définition de la route approval ci-dessous :
Étape 5. Appeler l’API
AuthHttp qui encapsule la classe Http d’Angular.
Installez angular2-jwt :
angular2-jwt, puis ajoutez-la au tableau providers du @NgModule de votre application. Cette fonction factory doit inclure une fonction tokenGetter qui récupère le access_token du stockage local.
angular2-jwt, vous pouvez utiliser la classe AuthHttp pour effectuer des appels sécurisés à votre API depuis n’importe où dans l’application. Pour ce faire, injectez AuthHttp dans tout composant ou service où vous en avez besoin et utilisez-la comme vous le feriez avec la classe Http standard d’Angular.
Étape 6. Renouvelez le jeton d’accès
AuthService qui appelle la méthode checkSession d’auth0.js. Si le renouvellement réussit, utilisez la méthode setSession existante pour enregistrer les nouveaux jetons dans le stockage local.
AuthService, ajoutez une méthode appelée scheduleRenewal pour planifier le moment où l’authentification doit être renouvelée silencieusement. Dans l’exemple ci-dessous, cette opération est configurée pour se produire 30 secondes avant l’expiration réelle du jeton. Ajoutez également une méthode appelée unscheduleRenewal pour se désabonner de l’Observable.
scheduleRenewal dans votre AppComponent au chargement de la page. Cela se produira après chaque flux d’authentification, que l’utilisateur ouvre explicitement une session ou qu’une authentification silencieuse ait lieu.