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

Tomcat et TomEE Java Discussion :

Gestion d'accès authentification-authorisation


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 50
    Points
    50
    Par défaut Gestion d'accès authentification-authorisation
    bonjour,
    J'aimerai avoir 2 security roles (user pour simple utilisateur et admin pour les admin).mais lorsque je déclare dans mon web.xml le 2eme role, je reçois toujours une erreur.
    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
     
    <security-constraint>
            <web-resource-collection>
                <web-resource-name>secured</web-resource-name>
                <url-pattern>/*</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                <role-name>user</role-name>
                
            </auth-constraint>
        </security-constraint>
        <security-role>
            <role-name>user</role-name>
            
        </security-role>
        <login-config>
            <auth-method>FORM</auth-method>
            <form-login-config>
                <form-login-page>/login.jsp</form-login-page>
                <form-error-page>/login_failure.jsp</form-error-page>
            </form-login-config>
        </login-config>
    ce code est fonctionnel mais j'aimerai sécuriser un dossier admin/ .donc comemtn peut-on avoir les deux role-name(user et admin) au meme temps sachant que si je met le 2eme role name ça part toujours dans une erreur

    merci

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java/JavaEE
    Inscrit en
    Août 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java/JavaEE

    Informations forums :
    Inscription : Août 2014
    Messages : 194
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    pour les applications que je développe j'utilise un filter pour la gestion des privilège. Donc pour sécurisé un document jte passe un exemple
    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
     
    @WebFilter("/faces/document/*")
    public class SecurityFilter  implements Filter{
     
    	public SecurityFilter  (){
     
    	}
     
    	public void destroy() {
    	}
     
            //AuthentificationBean c'est le managedBean d'authentification, c'est un sessionScoped
    	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    		HttpServletRequest req = (HttpServletRequest) request;
    		HttpServletResponse resp = (HttpServletResponse) response;
    		AuthentificationBean authBean = (AuthentificationBean) req.getSession().getAttribute("authBean");
     
    		boolean letGo = false;
     
                     //Tu ajoute ici les tests que tu souhaite implémenté ... ici c'est pour tester si un utilisateur est connecté "isLoggedIn"
    		if ((authBean != null) &&(authBean.isLoggedIn())){
    			letGo = true;
    		}
     
    		if (letGo) {
    			chain.doFilter(request, response);
    		}
                     //redirection
                       else{
    			resp.sendRedirect(req.getContextPath()+ "/faces/login.xhtml");
    		}
    	}
     
    	public void init(FilterConfig fConfig) throws ServletException {
    	}
     
    }
    Et bien sur déclarer ce filter dans web.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <filter>
      <filter-name>SecurityFilter</filter-name>
      <filter-class>com.filter.SecurityFilter</filter-class>
     </filter>
      <filter>

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Ton web.xml devrait contenir quelque chose comme ça
    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
     
    ...
        <security-constraint>
            <web-resource-collection>
                <web-resource-name>DevisVPI</web-resource-name>
                <url-pattern>/views/*</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                <role-name>ADMIN</role-name>
                <role-name>CONSULT</role-name>
            </auth-constraint>
        </security-constraint>
        <login-config>
            <auth-method>FORM</auth-method>
            <realm-name>DevisVPI</realm-name>
            <form-login-config>
                <form-login-page>/login.xhtml</form-login-page>
                <form-error-page>/login-error.xhtml</form-error-page>
            </form-login-config>
        </login-config>
        <security-role>
            <role-name>ADMIN</role-name>
        </security-role>
        <security-role>
            <role-name>CONSULT</role-name>
        </security-role>
    ...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Java/JavaEE
    Inscrit en
    Août 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java/JavaEE

    Informations forums :
    Inscription : Août 2014
    Messages : 194
    Points : 290
    Points
    290
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Ton web.xml devrait contenir quelque chose comme ça
    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
     
    ...
        <security-constraint>
            <web-resource-collection>
                <web-resource-name>DevisVPI</web-resource-name>
                <url-pattern>/views/*</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                <role-name>ADMIN</role-name>
                <role-name>CONSULT</role-name>
            </auth-constraint>
        </security-constraint>
        <login-config>
            <auth-method>FORM</auth-method>
            <realm-name>DevisVPI</realm-name>
            <form-login-config>
                <form-login-page>/login.xhtml</form-login-page>
                <form-error-page>/login-error.xhtml</form-error-page>
            </form-login-config>
        </login-config>
        <security-role>
            <role-name>ADMIN</role-name>
        </security-role>
        <security-role>
            <role-name>CONSULT</role-name>
        </security-role>
    ...
    ça semble intéressant j'essai d'implémenté ce code il fonctionne bien pour filtrage.
    Mais comment préciser ce rôle pour l'utilisateur après son auhtentification pour qu'il puisse avoir un des rôles précisé dans le fichier web.xml ??

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Il faut configurer ce qu'on appelle un REALM, il y a différente façon de faire, via une base de données, un LDAP, etc...
    La façon de mettre en oeuvre dépend également du serveur cible...

    Dans le principe, avec une base de données, on aura une table des utilisateurs et une table des rôles de l'utilisateur.
    Voici un exemple tiré de la doc de Tomcat ici
    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
     
    Exemple tiré
     
    create table users (
      user_name         varchar(15) not null primary key,
      user_pass         varchar(15) not null
    );
     
    create table user_roles (
      user_name         varchar(15) not null,
      role_name         varchar(15) not null,
      primary key (user_name, role_name)
    );
     
    Example Realm elements are included (commented out) in the default $CATALINA_BASE/conf/server.xml file. Here's an example for using a MySQL database called "authority", configured with the tables described above, and accessed with username "dbuser" and password "dbpass":
     
     
    <Realm className="org.apache.catalina.realm.JDBCRealm"
          driverName="org.gjt.mm.mysql.Driver"
       connectionURL="jdbc:mysql://localhost/authority?user=dbuser&amp;password=dbpass"
           userTable="users" userNameCol="user_name" userCredCol="user_pass"
       userRoleTable="user_roles" roleNameCol="role_name"/>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [Fichier] Gestion multi accès d'un fichier
    Par Rayek dans le forum Langage
    Réponses: 4
    Dernier message: 24/11/2005, 14h21
  2. Réponses: 1
    Dernier message: 18/11/2005, 07h47
  3. [Sécurité]Gestion des accès dans plusieurs bases
    Par vincentj dans le forum Débuter
    Réponses: 1
    Dernier message: 05/01/2005, 14h19
  4. Gestion d'acces a internet
    Par vedder dans le forum Développement
    Réponses: 3
    Dernier message: 12/10/2004, 17h18
  5. [Struts] Droits d'un user et gestion des accès aux pages
    Par PeteMitchell dans le forum Struts 1
    Réponses: 4
    Dernier message: 14/04/2004, 11h30

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