1

Je suis nouveau pour le démarrage de printemps et essayer d'implémenter le client oauth2 avec facebook comme fournisseur oauth2. J'ai déjà une authentification de jeton JWT traditionnelle en place qui est configurée avec @EnableWebSecurity avec le gestionnaire d'authentification par défaut et le générateur de jetons custome JWT.Comment on peut utiliser d'autres fournisseurs oauth2 comme FB, Google dans un système d'authentification jwt existant

  • est-il vraiment nécessaire de configurer AuthorizationServer et ResourceServer dans scénario ci-dessus?
  • sinon pourquoi mon code me renvoie toujours seulement le code et l'état de facebook pour rappeler l'URL.

S'il vous plaît un coup d'oeil dans le code here

+0

J'ai essayé de fusionner le client de filtre d'authentification de client oavh facebook avec ma configuration de filtre d'authentification JWT existante. tout fonctionne bien juste je reçois le code de facebook plutôt que le jeton d'accès ... Je ne sais pas comment je peux passer le type de subvention dans le démarrage de printemps, donc il demandera ACCESS TOKEN plutôt que CODE de facebook. –

Répondre

1

oauth2 = protocole de délégation d'autorisation PAS une d'authentification unique.

Si vous souhaitez utiliser FaceBook et Google comme fournisseur d'identité, vous devez utiliser un protocole de fédération d'identité, c'est-à-dire OpenId Connect (OIDC). Ce dernier ajoute une couche d'authentification (utilisant le jeton d'identification JWT) au-dessus de la couche d'autorisation oauth2. En ce qui concerne plus spécifiquement votre question (qui n'est pas très claire) sur la configuration de la sécurité de printemps, il semble que l'implémentation actuelle du serveur oauth2 (AuthorizationServer et ResourceServer dont vous parlez fait partie) is not suitable as it is pour implémenter un OIDC En ce qui concerne le code et l'état retournés à l'URL de rappel, cela fait partie du oauth2 authorization code flow et c'est tout à fait normal, vous devez ensuite échanger le code récupéré contre un jeton d'accès en utilisant le point de terminaison du serveur d'autorisation.

(l'état est juste ici pour permettre de transmettre une information par exemple un identifiant de locataire, à travers le flux entier oauth2).

Here est vraiment bien écrit l'article de vulgarisation oauth2.

+0

Merci pour votre réponse! et désolé pour la question pas bien compilé. Si le comportement du code est normal, alors je dois à nouveau écrire un client http pour parler à facebook afin d'obtenir un jeton d'accès, ce qui signifie que cette communication ne sera pas prise en charge par le client spring boot oauth. –

+0

Je suppose que Spring peut gérer tout, y compris la gestion des rappels (il utilise probablement le MVC de printemps, etc.) mais je dois avouer que j'ai une profonde haine contre l'ensemble du ressort et en particulier la partie web. Personnellement, quand j'applique oauth en tant que client, je viens de mettre en place une servlet et de gérer la récupération de jetons d'accès moi-même en utilisant un bon vieux client Http ou un simple lib comme apache oltu. Je ne peux pas vraiment vous aider ici, je m'excuse – Gab

+0

Il semble que votre callback soit déjà implémenté dans votre code dans Oauth2AuthController # accessToken(). Cependant, autant que je me souvienne, l'échange de code contre le jeton d'accès doit être fait en utilisant POST et l'application/x-www-form-urlencoded comme type de contenu. – Gab