IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

JAAS et les managed bean


Sujet :

Java

  1. #1
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Par défaut JAAS et les managed bean
    salut,
    en effectuant des recherches sur JAAS, j'ai pu comprendre que les CallbackHandler servent à récupérer les données entrés par l'utilisateur(login & mot de pass) dans des Callback
    or pour mois,travaillant avec jsf, mes managed bean me permettent de récupérer les données entrés par l'utilisateur
    si j'ai bien compris, dites moi est ce qu'il faut donc utiliser des callbacks ouse contenter de mes managed beans pour recuperer les données

  2. #2
    Invité
    Invité(e)
    Par défaut
    Un Callback Handler peut très bien récupérer les données de tes propriétés d'un managed Bean je ne pense pas que ce soit un problème... Mais maintenant une question : après tout ce que tu as demandé et mes réponses, pourrait-t-on voir ce que tu as commencé à faire pour voir ce qui te gêne ?
    Mais JAAS a aussi une certaine logique à respecter (LoginModule avec CallbackHandler etc etc...).
    Je pense aussi que tu peux trouver des informatiosn très facilement en cherchant avec JSF et JAAS sur un moteur de recherche, par exemple, as tu lu cette page : http://weblogs.java.net/blog/edburns..._using_ja.html ?

  3. #3
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Par défaut
    Citation Envoyé par George7 Voir le message
    Un Callback Handler peut très bien récupérer les données de tes propriétés d'un managed Bean je ne pense pas que ce soit un problème... Mais maintenant une question : après tout ce que tu as demandé et mes réponses, pourrait-t-on voir ce que tu as commencé à faire pour voir ce qui te gêne ?
    Mais JAAS a aussi une certaine logique à respecter (LoginModule avec CallbackHandler etc etc...).
    Je pense aussi que tu peux trouver des informatiosn très facilement en cherchant avec JSF et JAAS sur un moteur de recherche, par exemple, as tu lu cette page : http://weblogs.java.net/blog/edburns..._using_ja.html ?
    merci infiniment George pour votre aide
    je me sent maintenant bien avec JAAS grace à vous
    j'ai bien intégrer JAAS dans mon application JSF
    si tu veut que je t'envoi mon code finale dis le mois et ça serai avec grand plaisir
    merciiiii

  4. #4
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Par défaut
    voici mon code en espérant qu'il aidera un autre jour :
    • le module Login

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    public class MyLoginModule implements LoginModule {
    	private Subject subject;
    	private CallbackHandler callbackHandler;
    	private TypedPrincipal namePrincipal;
    	private String userName;
    	private boolean succeeded = false;
    	private boolean commitSucceeded = false;
    	@SuppressWarnings({ "unchecked", "unused" })
    	private Map sharedState;
    	@SuppressWarnings({ "unchecked", "unused" })
    	private Map options;
     
    	@SuppressWarnings("unchecked")
    	public void initialize(Subject subject, CallbackHandler callbackHandler,
    			Map sharedState, Map options) {
    		this.subject = subject;
    		this.callbackHandler = callbackHandler;
    		//this.sharedState= sharedState;
    		this.options= options;
    		//debug = "true".equalsIgnoreCase((String) options.get("debug"));
    	}
     
    	public boolean login() throws LoginException {
    	System.out.println("test Login");
    		NameCallback nameCallback = new NameCallback("user:hg");
     
    		PasswordCallback passwordCallback = new PasswordCallback("password :",false);
    		Callback[] callbacks = new Callback[] { nameCallback, passwordCallback };
    		try {
    			callbackHandler.handle(callbacks);
    			System.out.println("username==="+nameCallback.getName());
    			}
    		catch (Exception ex) 
    			{
    			 ex.printStackTrace();
    			 throw new LoginException("Error while getting user input !");
    		    }
    		userName = nameCallback.getName();
    		succeeded = validateUser(userName, passwordCallback.getPassword());
    		passwordCallback.clearPassword();
     
    		return succeeded;
    	}
     
    	public boolean abort() throws LoginException {
    		if (!succeeded)
    			return false;
    		else if (succeeded && commitSucceeded)
    			logout();
    		else
    			succeeded = false;
     
    		return true;
    	}
     
    	public boolean commit() throws LoginException {
     
    		if (!succeeded) {
    			userName = null;
    			return false;
    		}
    		namePrincipal = new TypedPrincipal(userName);
    		if (!subject.getPrincipals().contains(namePrincipal)) {
    			subject.getPrincipals().add(namePrincipal);
    		}
    		userName = null;
    		commitSucceeded = true;
    		return true;
    	}
     
    	public boolean logout() throws LoginException {
    		subject.getPrincipals().remove(namePrincipal);
    		namePrincipal = null;
    		userName = null;
    		succeeded = commitSucceeded = false;
    		return true;
    	}
     
    	private boolean validateUser(String userName, char[] password) {
     
    		return "riadh".equals(userName) && "arous".equals(new String(password));
     
    	}
    }
    • le callback handler


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    public  class LoginCallback implements CallbackHandler 
    {
        private String userName = null;
        private String password = null;
     
        public LoginCallback(String userName, String password) 
        {
          this.userName = userName;
          this.password = password;
        }
     
        public void handle(Callback[] callbacks) 
        {
          for (int i = 0; i< callbacks.length; i++) 
          {
            if (callbacks[i] instanceof NameCallback) 
            {
              NameCallback nc = (NameCallback)callbacks[i];
              nc.setName(userName);
            } 
            else if (callbacks[i] instanceof PasswordCallback) {
              PasswordCallback pc = (PasswordCallback)callbacks[i];
              pc.setPassword(password.toCharArray());
            }
          }
        }
     }
    • la classe Principal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    public class TypedPrincipal implements Principal, Serializable
    {
     
     
    	private static final long serialVersionUID = 1L;
    	protected String	name;
     
    	/**
             * Create a TypedPrincipal with a name.
             *
             * <p>
             *
             * @param name the name for this principal.
             * @param type the type for this principal.
             * @exception NullPointerException if the <code>name</code>
             *                      is <code>null</code>.
             */
    	public TypedPrincipal(String name)
    	{
    		if (name == null) {
    			throw new NullPointerException("Illegal null name");
    		}
    		this.name = name;
     
    	}
     
     
     
    	public boolean equals(Object another)
    	{
    		if (!(another instanceof NamePrincipal)) {
    			return false;
    		}
    		return ((NamePrincipal) another).getName().equals(name);
    	}
     
     
    	public void setName(String name)
    	{
    		this.name = name;
    	}
     
    	/**
             * Return the name for this <code>TypedPrincipal</code>.
             *
             * <p>
             *
             * @return the name for this <code>TypedPrincipal</code>
             */
    	public String getName()
    	{
    		return name;
    	}
    }
    et le fichier de configurationde JAAS est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FileLogin
    {
      jaas.fileLogin.MyLoginModule required;
    };

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/04/2013, 18h19
  2. initialiser tous les managed bean session
    Par azassma dans le forum JSF
    Réponses: 4
    Dernier message: 27/07/2012, 13h02
  3. Réponses: 1
    Dernier message: 01/10/2009, 20h08
  4. A quoi sert les managed bean ?
    Par soony dans le forum JSF
    Réponses: 2
    Dernier message: 31/08/2009, 12h26
  5. icefaces et les managed bean
    Par *alexandre* dans le forum JSF
    Réponses: 2
    Dernier message: 15/09/2008, 08h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo