/ / OAuth2 avec la sécurité de printemps - InsufficientAuthenticationException

OAuth2 avec Spring Security - InsufficientAuthenticationException - java, printemps, exception, oauth-2.0, spring-security-oauth2

Je travaille actuellement sur un projet impliquant la sécurité de printemps (pour OAuth2).

Nous utilisons le flux autorisation_code.

Cependant, lorsque le client frappe leAuthorizationEndpoint (/ oauth / authorize) nous obtenons une "InsufficientAuthenticationException". Cela peut être dû à un système externe également impliqué dans ce flux, qui effectue une redirection pour le client et l'envoie au point de terminaison / oauth / authorize.

D'après ce que j'ai compris en regardant à travers lele fichier journal de débogage et lors de la lecture du code source, le principal est null qui est utilisé dans la méthode AuthorizationEndpoint.authorize (en particulier la ligne 138, nous utilisons spring-security-oauth2-2.0.7.RELEASE).

Je comprends quel est le problème du printempspoint (il ne "connait" pas l'utilisateur déjà authentifié auprès du système) mais je ne comprends pas quelle information est précisément utilisée par spring pour identifier l'utilisateur (j'imagine que ce serait ma question centrale)

J'ai essayé de faire un GET contre / oauth / authorizeavec les paramètres corrects et en envoyant avec la demande l'en-tête d'autorisation contenant le jeton d'accès au porteur mais spring lève toujours l'insu InsuffisanceAuthenticationException J'espère que quelqu'un pourra m'aider avec ça.

Meilleures salutations p.s.

Réponses:

0 pour la réponse № 1

Je vais répondre à ma propre question ici à des fins de documentation. TJ fondamentalement, m'a dirigé dans la bonne direction.

Dans mon cas, leInsufficientAuthenticationException provient d'une configuration légèrement incorrecte de l'ensemble de la pile. Pour fournir le contenu aux utilisateurs, on utilise apache, qui sert également de proxy inverse, tronquant le contexte racine de l'application déployée sur le tomcat situé en arrière-plan.

La réponse qui a finalement résolu mon problème peut être trouvée ici. Le problème était en fait que la sessionLe cookie contenait un chemin non valide (l'attribut chemin contenait toujours le contexte racine, car tomcat n'a pas été informé que l'apache en face de lui tronquait le contexte racine en "/".) Donc, définir le chemin côté tomcat via setSessionCookie = " / "in tomcat" context.xml a fait l'affaire.

Ainsi, quand une redirection frappe le printemps "s oauth / authorizeLe système d'extrémité l'a fait avec un cookie de session contenant le mauvais chemin. pour cette raison, la demande semblait bien provenir d'une source non authentifiée, ce qui me laisse perplexe à propos de l'insufficientauthenticationException