Le gestion des utilisateurs ( sécurité) [Résolu]

Messages postés
11
Date d'inscription
mercredi 12 janvier 2011
Dernière intervention
11 mars 2012
- - Dernière réponse : cs_olichou
Messages postés
11
Date d'inscription
mercredi 12 janvier 2011
Dernière intervention
11 mars 2012
- 28 juil. 2011 à 10:23
bonjour à tous je suis débutante en java et j'aimerais savoir comment on gère la sécurité (l'accès)d'une application de gestion. en fait j'aimerais former des groupes et à chacun de ces groupes leur attribuer des privilèges d'accès à mon application
comment faire alors ? merci à tous
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
275
3
Merci
Bonjour,

Ca dépend de nombreux paramètres :

Si tu utilises une base de données, elle permettent de définir des rôles et les rôles sont associés à un ensemble de privilèges qui te permettent d'écrire ou non dans la base par exemple. Tu peux lier ces rôles à un objet java.

Si tu utilises un annuaire (une bonne idée), il te permettra de récupérer des informations sur les droits des utilisateurs.

Si tu utilises une application web, tu devras penser à établir une connexion sécurisée pour que le mot de passe et le login ne circulent pas en clair sur le réseau.

Sinon, pour une utilisation locale, tu peux te contenter de créer un enum droit et d'associer un ensemble de droits au profils des utilisateurs. C'est ce que j'avais fait dans une application il y a quelque temps, mon enum avait deux valeurs (Consultation, Modification) et la classe utilisateur contenait une liste de droits (les droits associés à l'utilisateur) et chaque écran de l'application possédait également une liste de droits (les droits nécessaires pour accéder à l'écran). Chaque fois qu'un utilisateur demandait l'affichage d'un écran, je vérifias s'il avait les droits nécessaires pour le faire.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
275
3
Merci
Voilà la classe Utilisateur qui utilise un Enum Droit qui contient chez moi deux valeurs consulter et modifier (a toi de voir ce que tu veux mettre chez toi

/**
 * Utilisateur est la classe qui représente un utilisateur de l'application
 * 
 * Un utilisateur est caractérisé par les informations suivantes :
 * 
 * <li>un login</li>
 * <li>un mot de passe permettant de s'autehntifier</li>
 * <li>une liste de droits associes</li>
 * 
 * 


 * 
 *
 * 


 * 
 * @author Julien
 * @version 1.0
 */
public class Utilisateur {

/**
 * droits de l'utilisateur du site
 */
private List<Droit> droits;

/**
 * Le login de l'utilisateur (son idep)
 */
private String login;

/**
 * Le mot de passe associe au login
 */
private String password;


/**
 * Constructeur d'un utilisateur
 * 
 * Ce constructeur permet de creer un utilisateur
 * 


 * @param droits
 * 	Les droits de l'utilisateur
 * @param login
 * 	Le login de l'utilisateur
 * @param password
 * 	Le mot de passe associé
 */
public Utilisateur(List<Droit> droits, String login, String password) {
super();
this.droits = droits;
this.login = login;
this.password = password;
}

public List<Droit> getDroits() {
return droits;
}

public String getLogin() {
return login;
}

public String getPassword() {
return password;
}


/**
 * @param droits 
 * 	the droits to set
 */
public void setDroits(List<Droit> droits) {
this.droits = droits;
}

}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
275
3
Merci
Et le code qui permet de récupérer les utilsateurs en base de données :

/**
 * UtilisateurDao represente une classe d'acces a la table UTILISATEUR
 * 
 * Cette classe permet de selectionner des lignes de la table UTILISATEUR
 * 


 * 
 * @author Julien
 * @version 1.0
 */
public class UtilisateurDao {

/**
 * Instance de Utilisateur Dao
 */
private static UtilisateurDao instance;

/**
 * Connexion a l'annuaire
 */
private IConnexion connexion = Annuaire.getInstance();

private String pwd=ParametresTables.pwd.name();
private String idep=ParametresTables.idep.name();
private String idbp=ParametresTables.idbp.name();

/**
 * Constructeur
 */
public UtilisateurDao(IConnexion c) {
super();
connexion=c;
}

/**
 * Fonction qui retourne un utilisateur grace a son identtifiant
 * @param id
 * 	L'identifiant recherche
 * @return
 * 	L'utilisateur correspondant
 */
public IUtilisateur getUtilisateurById(String id){
connexion.ouvrir(); 
IUtilisateur u = null;
String requete="SELECT * FROM UTILISATEUR"+
" WHERE UTILISATEUR."+idep+"='"+id+"'";
ResultSet res=connexion.executeQuery(requete);
try {
if(res!=null && res.next()){
u=reconstituerUtilisateur(res);
}
} 
catch (SQLException e) {
e.printStackTrace();
}
return u;
}

/**
 * Fonction qui verifie les mots de passe
 * @param id
 * 	l'identifiant entre
 * @param pwd
 * 	le mot de passe entre
 * @return
 * 	vrai si le mot de passe correspond a l'id et faux sinon
 */
public boolean isPwdCorrect(String id,String pwd){
IUtilisateur u=getUtilisateurById(id);
return u!=null && u.getPassword().equals(pwd);

}

/**
 * Fonction qui reconstitue un utilisateur en fonction 
 * d'une ligne de la resultset
 * @param res
 * 	La resultset
 * @return
 * 	L'utilisateur associe
 */
public IUtilisateur reconstituerUtilisateur(ResultSet res){
IUtilisateur u=null;
try {
if(res!=null){
List<Droit> lDroits =new ArrayList<Droit>();
lDroits.add(Droit.Consultation);
if(res.getInt(idbp)==0){
lDroits.add(Droit.Modification);
}
u=new Utilisateur(
lDroits, 
res.getString(idep), 
res.getString(pwd)
);
}
}
catch (SQLException e) {
e.printStackTrace();
}
return u;
}

/**
 * Fonction qui permet de retourner l'instance d'utilisateurDao
 * @return
 * 	l'instance d'utilisateurdao
 */
public static UtilisateurDao getInstance(IConnexion c) {
if(instance==null){
instance=new UtilisateurDao(c);
}
return instance;
}
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
275
0
Merci
Bonjour,

Alors, où en es tu ?
Commenter la réponse de cs_Julien39
Messages postés
11
Date d'inscription
mercredi 12 janvier 2011
Dernière intervention
11 mars 2012
0
Merci
bon moi je veux une gestion avec une base de donnée et franchement je sais pas par ou commencer
Commenter la réponse de cs_olichou
Messages postés
11
Date d'inscription
mercredi 12 janvier 2011
Dernière intervention
11 mars 2012
0
Merci
s'il vous plait un exemple de code
Commenter la réponse de cs_olichou
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
275
0
Merci
Oui, utilises une base de données (forcément).

Dans ta base, tu créé une table utilisateur et une table droit. Et lorsque tu as besoin de l'utilisateur dans ton application, tu le charges en mémoire sous forme d'un objet Utilisateur. Je vais chercher si je n'ai pas un code semblable sous le coude et je t'envoie ca.
Commenter la réponse de cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
275
0
Merci
Bon, normalement, sur le forum on ne demande pas de code, alors ne t'habitue pas trop à ce genre de réponse...

Il va falloir que tu adaptes ca a ton projet, ne l'ajoute pas tel quel.
Commenter la réponse de cs_Julien39
Messages postés
11
Date d'inscription
mercredi 12 janvier 2011
Dernière intervention
11 mars 2012
0
Merci
merci julien39
mais moi j'ai écrit entre temps deux classes une utilisateur et une autre droit mon prblème était que je suis entrain de faire une application lourde et non web
sinon merci pour le cheminement il m'aidera à bien comprendre comment se fait la sécurité en java
merci encore
Commenter la réponse de cs_olichou
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
275
0
Merci
Pour une application lourde, c'est la même chose en tout cas pour ce que je t'ai donné.

Je ne connais pas tes exigences en terme de sécurité mais une application lourde est plus simple à gérer à ce niveau là.
Commenter la réponse de cs_Julien39
Messages postés
11
Date d'inscription
mercredi 12 janvier 2011
Dernière intervention
11 mars 2012
0
Merci
ok merci
Commenter la réponse de cs_olichou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.