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

Sécurité Java Discussion :

probleme avec jaas


Sujet :

Sécurité Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 probleme avec jaas
    salut
    j'ai integré jaas dans une application web
    je voudrait testé est ce que ca marche bien mais j'ai rencontré un probleme: j'ai configuré dans web.xml une page jsf pageSecurise.jsfdont l'accés est securisé

    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
     
    <security-constraint>
      <display-name>WebApp Administration</display-name>
      <web-resource-collection>
       <web-resource-name>WebApp Admin</web-resource-name>
       <url-pattern>/pages/pageSecurise.jsf</url-pattern>
       <http-method>DELETE</http-method>
       <http-method>GET</http-method>
       <http-method>POST</http-method>
       <http-method>PUT</http-method>
      </web-resource-collection>
      <auth-constraint>
       <role-name>admin</role-name>
       <role-name>other-role</role-name>
      </auth-constraint>
     </security-constraint>
    voici ma classe MyLoginModule :
    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
    86
    87
    88
    89
     
    public class MyLoginModule implements LoginModule {
    	private Subject subject;
    	private CallbackHandler callbackHandler;
    	private MyPrincipalName 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 {
     
    		NameCallback nameCallback = new NameCallback("user");
     
    		PasswordCallback passwordCallback = new PasswordCallback("password :",false);
    		Callback[] callbacks = new Callback[] {nameCallback,passwordCallback};
    		try {
    			callbackHandler.handle(callbacks);			
    			}
    		catch (Exception ex) 
    			{
    			 ex.printStackTrace();
    			 throw new LoginException("Exception lors de la récupération des donnés !");
    		    }
    		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 MyPrincipalName(userName);
    		if (!subject.getPrincipals().contains(namePrincipal)) 
    		{
    			{
    				subject.getPrincipals().add(namePrincipal);
    				System.out.println("commit done");
    			}
    		}
    		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 "admin".equals(userName) && "secret".equals(new String(password));
     
    	}
    }
    j'ai bien dans la methode commit ajouté un Principal admin
    mais j'obtient une erreur 403(Accés à la ressource interdit)

    je veut savoir comment se fait la verification du role:comment le serveur compare le role déclaré pour ma page jsf dans le fichier web.xml à l'aide de la balise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <role-name>admin</role-name>
    et avec qu'elle valeur il comapre la valeure de sette balise

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    tu as déclaré ce role dans security roles

  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 Sniper37 Voir le message
    tu as déclaré ce role dans security roles
    oui ,il est bien déclaré dans la balise <security-role>
    je pense que le problème est que je ne connait pas comment le serveur récupère le nom d'utilisateur déjà authentifié dans ma page login.jsf

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    tu utilise quel type de realm?

  5. #5
    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 Sniper37 Voir le message
    tu utilise quel type de realm?
    j'utilise JAASRealm
    mais j'ai une ambiguité
    est ce qu'il est obligatoire d'utiliser un realm avec JAAS?
    tout ce que je connait est que JAAS permet de gérer les roles indépendamment du serveur utilisé; pourquoi donc utiliser de realm?

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par riadhhwajdii Voir le message
    j'utilise JAASRealm
    mais j'ai une ambiguité
    est ce qu'il est obligatoire d'utiliser un realm avec JAAS?
    tout ce que je connait est que JAAS permet de gérer les roles indépendamment du serveur utilisé; pourquoi donc utiliser de realm?
    oui, c'est obligatoire, je suppose que tu as déclaré le module dans le fichier le fichier de conf et l'ajouter au démarrage de la JVM, maintenant
    je pense que tu dois ajouter les roles dans la fonction commit, un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    java.util.Enumeration e = rolePrincipals.elements();
    		while (e.hasMoreElements()) {
    			RolePrincipal rolePrincipal = (RolePrincipal) e.nextElement();
     
    			if (!subject.getPrincipals().contains(rolePrincipal)) {
    				subject.getPrincipals().add(rolePrincipal);
    				logger.info("Added role principal");
    			}
    		}

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

Discussions similaires

  1. Probleme avec jaas
    Par koack dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 17/01/2011, 14h32
  2. probleme avec jaas et les permissions
    Par riadhhwajdii dans le forum Sécurité
    Réponses: 14
    Dernier message: 03/12/2009, 14h17
  3. probleme avec JAAS
    Par riadhhwajdii dans le forum Général Java
    Réponses: 1
    Dernier message: 01/10/2009, 13h09
  4. Probleme de JAAS avec JBoss
    Par amine1980 dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 17/02/2007, 19h47
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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