WSO2 API Manager - Authentifier l'utilisateur à partir du client API

Sep 08 2020

Je développe un ensemble de microservices exposés en tant que REST via le gestionnaire d'API WSO2.

Maintenant, j'aimerais appeler ces services dans le front-end angulaire. Quelle est la meilleure façon de gérer l'authentification et l'autorisation des utilisateurs?

J'ai trouvé que cela pouvait être fait via OAuth2 Password Grant comme décrit ici ?

Lorsque l'utilisateur se connecte, les informations d'identification de l'utilisateur seront envoyées à un point de terminaison WSO2 APIM spécifique (/ jeton), il valide, génère le jeton et ce jeton sera envoyé dans l'en-tête pour les appels suivants.

Est-ce la meilleure approche dans ce cas?

Merci d'avance,

Réponses

2 SushilkumarYadav Sep 14 2020 at 21:23

Comme mentionné dans votre question, https://apim.docs.wso2.com/en/next/learn/api-security/oauth2/grant-types/password-grant/Cette méthode ne fonctionnera que si vous disposez du nom d' utilisateur et du mot de passe du propriétaire de la ressource .

Prenons un exemple, supposons que vous ayez publié les API et créé un utilisateur (propriétaire de la ressource) dans le magasin WSO2. cet utilisateur est abonné à l'API à l'aide de l'application. l'application aura un identifiant client et un secret, qui seront utilisés pour générer le jeton OAuth2.0. ce jeton sera utilisé pour appeler les API.

Maintenant, dans votre projet angulaire, une façon consiste à coder en dur le base64 (clientid: clientsecret) et à appeler l'API de jeton pour générer le jeton de support OAuth2.0. utilisez le jeton généré pour appeler les API intégrées sur WSO2. Pour protéger vos API contre l'attaque, utilisez la limitation de débit basée sur l'IP

Maintenant, prenez une autre situation, si vous voulez que l'utilisateur s'authentifie d'abord, puis générez le JWT tokenpour cet utilisateur en utilisant le type d'octroi de mot de passe (en utilisant le nom d'utilisateur et le mot de passe de l'utilisateur réel), et en utilisant ce JWT, générez le OAuth2.0 Bearer tokenqui sera utilisé pour appeler les API.

Étapes à suivre pour la deuxième situation:

  1. lors de l'enregistrement (depuis Angular), intégrez en interne l'utilisateur dans le serveur d'identité WSO2. (Il existe une API WSO2 pour le même)
  2. Après l'enregistrement, générez le jeton JWT à partir du serveur d'identité en authentifiant le nom d'utilisateur et le mot de passe. (Encore une fois pour cela, l'API WSO2 est là)
  3. en utilisant maintenant ce jeton JWT, générez le jeton OAuth2.0 à partir de WSO2 APIM
  4. utilisez ce jeton pour appeler les API

La deuxième approche est l'approche idéale pour l'authentification et l'autorisation d'utilisateur à service utilisant WSO2 comme passerelle, tandis que la première approche se concentre principalement sur l'authentification et l'autorisation de service à service

J'espère que ça répond à ta question

Lien de référence: https://medium.com/wso2-learning/how-to-protect-your-apis-with-self-contained-access-token-jwt-using-wso2-api-manager-and-wso2-75673d8a4686