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

Signaler
Messages postés
11
Date d'inscription
mercredi 12 janvier 2011
Statut
Membre
Dernière intervention
11 mars 2012
-
cs_olichou
Messages postés
11
Date d'inscription
mercredi 12 janvier 2011
Statut
Membre
Dernière intervention
11 mars 2012
-
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

11 réponses

Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
272
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.
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
272
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;
}

}
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
272
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;
}
}

Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
272
Bonjour,

Alors, où en es tu ?
Messages postés
11
Date d'inscription
mercredi 12 janvier 2011
Statut
Membre
Dernière intervention
11 mars 2012

bon moi je veux une gestion avec une base de donnée et franchement je sais pas par ou commencer
Messages postés
11
Date d'inscription
mercredi 12 janvier 2011
Statut
Membre
Dernière intervention
11 mars 2012

s'il vous plait un exemple de code
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
272
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.
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
272
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.
Messages postés
11
Date d'inscription
mercredi 12 janvier 2011
Statut
Membre
Dernière intervention
11 mars 2012

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
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
272
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à.
Messages postés
11
Date d'inscription
mercredi 12 janvier 2011
Statut
Membre
Dernière intervention
11 mars 2012

ok merci