[Spring Security] Authentification avec un Web service

Authentification avec un Web service [Spring Security] - Java - Programmation

Marsh Posté le 24-06-2009 à 14:00:24    

Salut tout le monde,
 
j'ai besoin d'utiliser un web service pour gerer l'authentification du client que je developpe. Je ne controle donc pas les informations que je peux recuperer.
 
J'ai vu sur le net des exemples en implementant userDetailsService cependant dans mon cas je pense que cela ne peut pas marcher.
 
De ce que j'en ai compris, l'implementation de userDetailsService fonctionne ainsi:
-on recupere les donnees de l'utilisateur (mot de passe compris) avec son login
-spring security check en local si le mot de passe recuperer est le meme que celui tapé.
 
Mon prebleme c'est que mon web service n'a pas de methode permettant de retrouver ce genre d'informations.
 
En gros, j'ai 2 methodes qui pourraient servir pour l'authentification:
1) AuthResult getAuthResultOnBehalfOfUser(String canonicalName, String domainName, Context caller)
Mais je n'ai pas le password utilisateur dans AuthResult donc je ne peux pas utiliser l'implementation de userDetailsService
2) AuthResult authenticate(String username, byte[] password)
Mais je ne vois pas comment l'utiliser avec userDetailsService etant donné que la seule methode de cette implementation est : loadUserByUsername(String username) / donc je n'ai pas le mot de passe tapé par l'utilisateur.
 
Je pense donc qu'il faut utiliser une autre facon de faire, pas userDetailsService car userDetailsService ne me permet pas d'utiliser le mot de passe. Cependant je ne vois pas comment.
Pouvez vous me donner quelques pistes pour :
1-spring security affiche un formulaire (ok)
2-l'utilisateur rentre son login et pwd (ok)
3-spring security fait appel a un authenticationProvider personnalisé en fournissant login et pwd (pas ok)
4-j'appelle mon web service avec login et pwd(ok) et check si c'est bon pour l'authentification
5-je retourne un object userDetails ou qqc du meme genre contenant les droits utilisateurs (depend du 3-)
 
Merci d'avance


---------------
Toinou87 ;-p May the force be with you!!
Reply

Marsh Posté le 24-06-2009 à 14:00:24   

Reply

Marsh Posté le 25-06-2009 à 20:52:09    

Le UserDetails est utilisé par le DaoProvider, qui doit être utilisé dans le cas précis que tu as énuméré : récupération de toutes les habilitations depuis une base données (UserDetailsService) puis (après !) comparaison avec le mot de passe.
 
Mais dans ton cas, c'est plutôt un RemoteProvider (je n'ai pas le nom exact) qu'il faut utiliser.
Avec le RemoteProvider, spring security délègue totalement la gestion du contrôle, dans ton cas, à ton webservice.

Reply

Marsh Posté le 28-06-2009 à 23:14:56    

J'ai reussi a le faire depuis, j'avais pas posté la solution ici, dsl.
Je l'ai fait en implementant AuthenticationProvider (il me semble que c'est le nom). Apparement ca marche aussi avec AuthenticationManager mais j'avais pas reussi.
 
Donc j'implemente AuthenticationProvider. Dans la méthode "authenticate" je cast l'authentication (récupérée en parametre) en UsernamePasswordAuthenticationToken. je peux en tirer le mdp et le login pour mon WebService.
 
BTW: merci pour la reponse.


---------------
Toinou87 ;-p May the force be with you!!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed