Étape 1. Configuration
AuthConfig qui contiendra différentes valeurs de configuration. Placez cette interface dans un fichier appelé auth0-variables.ts.
WebAuth de auth0.js.
- login : appelle
authorizede auth0.js, ce qui lance - handleAuthentication : recherche un résultat d’authentification dans le hachage de l’URL et le traite à l’aide de la méthode
parseHashd’auth0.js - setSession : définit le de l’utilisateur, son , ainsi que l’heure à laquelle le jeton d’accès expirera
- 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 passée
Traiter le résultat de l’authentification
handleAuthentication de AuthService est chargée de traiter le hachage.
Appelez handleAuthentication dans le composant racine de votre application afin que le fragment de hachage d’authentification puisse être traité au premier chargement de l’application après la redirection de l’utilisateur.
Ajouter le composant Callback
- Cela évite d’avoir à mettre sur liste d’autorisation plusieurs URL de rappel (parfois même inconnues)
- Cela permet d’afficher un indicateur de chargement pendant que votre application crée la session côté client de l’utilisateur
CallbackComponent et ajoutez-y un indicateur de chargement.
assets. Consultez l’exemple à télécharger pour en voir une démonstration.
Après l’authentification, les utilisateurs seront brièvement redirigé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 de l’utilisateur
Extraire des renseignements du jeton
Cette section explique comment récupérer les renseignements de l’utilisateur à l’aide du jeton d’accès et du point de terminaison /userinfo. Vous pouvez aussi simplement décoder le 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 de renseignements supplémentaires sur l’utilisateur, envisagez d’utiliser notre Management API.
AuthService existante. Ajoutez une fonction getProfile qui extraira le jeton d’accès de l’utilisateur du stockage local, puis le transmettra à la fonction userInfo pour récupérer les renseignements de l’utilisateur.
Étape 4. Afficher les éléments de l’UI de façon conditionnelle selon la portée
scope renvoyé dans authResult n’est pas vide, cela signifie que l’utilisateur a reçu un ensemble de portées différent de celui demandé au départ; nous devons donc utiliser authResult.scope pour déterminer les portées qui lui ont été accordées.
Si le scope renvoyé dans authResult est vide, cela signifie que l’utilisateur a obtenu toutes les portées demandées; nous pouvons donc utiliser les portées demandées pour déterminer celles qui lui ont été accordées.
Voici le code que nous avons écrit plus tôt pour la fonction setSession qui effectue cette vérification :
AuthService une fonction permettant de déterminer si un utilisateur a reçu un scope précis :
approve:timesheets. Notez que, dans le code ci-dessous, nous avons ajouté un appel à la fonction userHasScopes pour déterminer si ce lien doit être affiché ou non.
Protéger une route
scopes appropriés. Pour ce faire, nous pouvons ajouter une nouvelle classe de service 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 de l’@NgModule de votre application. La fonction de fabrique doit inclure une fonction tokenGetter qui récupère l’access_token à partir du stockage local.
angular2-jwt configuré, vous pouvez utiliser la classe AuthHttp pour effectuer des requêtes sécurisées vers votre API depuis n’importe où dans l’application. Pour ce faire, injectez AuthHttp dans tout composant ou service qui en a besoin et utilisez-le comme vous le feriez avec la classe Http standard d’Angular.
Étape 6. Renouveler 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 définir le moment où l’authentification doit être renouvelée en silence. Dans l’exemple ci-dessous, elle est configurée pour s’exécuter 30 secondes avant l’expiration réelle du jeton. Ajoutez également une méthode appelée unscheduleRenewal pour annuler l’abonnement à l’Observable.
scheduleRenewal dans votre AppComponent, afin qu’il s’exécute au chargement de la page. Cela se produira après chaque flux d’authentification, soit lorsque l’utilisateur se connecte explicitement, soit lors d’une authentification silencieuse.