2010-09-23 10 views
1

J'essaie de récupérer un contexte de sécurité dans mon bean spring-jersey, mais je continue d'obtenir une authentification nulle. Lorsque j'exécute la même commande à partir de mon application de printemps, elle récupère correctement le contexte de sécurité des utilisateurs connectés. La configuration du spring-jersey nécessite la création d'une servlet séparée pour l'application du ressort principal. Ainsi, le web.xml dispose de deux servlets, l'un pour l'application du ressort, l'autre pour le repos du maillot.Impossible de récupérer le contexte de sécurité depuis Spring-Jersey

En supposant que le problème est lié à cela, j'ai essayé de définir le mode de partage de contexte de sécurité à global, mais je ne peux toujours pas obtenir les informations de contexte à partir de Jersey.

SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_GLOBAL) 

Une aide avec ceci serait grandement appréciée!

Un grand merci, Nigel

Répondre

2

Peut-être que l'utilisateur est tout simplement pas authentifié, parce que vos demandes de Jersey ne disposent pas d'un cookie de session et par conséquent ne sont pas associés à la session de l'utilisateur authentifié?

Vous pouvez le vérifier en activant l'authentification anonyme dans Spring Security - vous devriez obtenir l'authentification anonyme au lieu de null si la supposition est exacte.

+0

j'ai l'authentification anonyme a permis, comme vous le suggérez, je l'aurais prévu à l'utilisateur configuré pour afficher, mais il ne le fait pas à Jersey. Cependant, quand je ne suis pas authentifié dans mon application de printemps, l'utilisateur configuré est show au lieu de null! Je peux voir votre point sur les cookies de session, je suis capable de récupérer des cookies de session de mon code de Jersey en utilisant @Context HttpServletRequest req, puis en récupérant la session à partir de là. Cependant SecurityContextHolder est indépendant de la session de ce que je comprends (?). –

+0

@Nigel: Oui, c'est indépendant de la session, mais pour les utilisateurs authentifiés, il est rempli à partir des attributs de session par les filtres Spring Security. Alors, les demandes de Jersey sont-elles traitées par les filtres Spring Security? – axtavt

+0

Merci pour le commentaire. Cet indice a aidé à résoudre mon problème, vérifiant comment mes filtres de sécurité ont été configurés, j'ai trouvé cette ligne dans ma configuration de sécurité de printemps

  
Enlever cela a résolu le problème, ce qui désactive tous les filtres de sécurité de printemps! Un grand merci pour votre aide :) –

0

@axtavt Merci pour le commentaire. Cet indice a aidé à résoudre mon problème, vérifier comment mes filtres de sécurité ont été configurés, j'ai trouvé cette ligne dans ma configuration de sécurité du printemps

<security:intercept-url pattern="/api/**" filters="none" /> 

Cette ligne désactive tous les filtres de sécurité à ressort, en supprimant ce soit réglé le problème.

Un grand merci pour votre aide :)