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

JSF Java Discussion :

[JSF 2] Protéger l'accès à un fichier XHTML


Sujet :

JSF Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut [JSF 2] Protéger l'accès à un fichier XHTML
    Bonjour,

    Dans mon application web, j'ai pas un espace d'administration de différents objets, j'ai crée un fichier administration.xhtml contenant des liens vers les pages a administrer.

    Aussi, dans l'application y'a pas de notion d'authentification (gestion d'utilisateurs)

    Je cherche un moyen de protéger l'accèe a ce fichier. c'est à dire quand je saisie dans l'url 'chemin_appli/admin/adminitration.xhtml', je doit saisir un user et mot de passe pour y'acceder.

    quels sont les solutions possible ?

    Merci

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Une authentification JAAS avec tes pages à protéger dans un répertoire spécifique.
    Ton web.xml va ressembler à ceci
    Code xml : 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
     
    ...
        <!-- Paramètres propre à l'authentification -->
        <security-constraint>
            <web-resource-collection>
                <web-resource-name>UnNom</web-resource-name>
                <url-pattern>/protected/*</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                <role-name>ADMIN</role-name>
            </auth-constraint>
        </security-constraint>
     
        <login-config>
            <auth-method>FORM</auth-method>
            <realm-name>RealmName</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>
    ...
    Pour la configuration du "realm", ça va dépendre de ton serveur cible.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut realm dans tomcat 7
    J'ai mis cette portion de code dans le web.xml

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <security-constraint>
    	    <display-name>Accee reservé à l'administrateur</display-name>
    	    <web-resource-collection>
    	        <web-resource-name>admin</web-resource-name>
    	        <url-pattern>/admin/*</url-pattern>
    	    </web-resource-collection>
    	    <auth-constraint>
                <role-name>ADMIN</role-name>
            </auth-constraint>
    </security-constraint>

    L'application tourne sur Tomcat 7. comment ajoutée le realm ?

    Pour info, quand j'accede a l'administration du serveur (en fesant un double click sur eclipse), y'a une case dans 'Server option --> enable security' es ce la bonne ?

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Il faut aussi la partie (au minimum "BASIC")
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <login-config>
            <auth-method>BASIC</auth-method>
    </login-config>
    Pour la configuration du realm sur Tomcat7, regarde la doc ici...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut Ajout de tomcat-users
    J'ai ajoutée l'option MemoryRealm dans le fichier server.xml de tomcat comme suit :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <Realm className="org.apache.catalina.realm.MemoryRealm" />

    J'ai ajouté aussi la security-contraint dans le web.xml comme suit :

    Code xml : 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>Accee reservé à l'administrateur</display-name>
    	    <web-resource-collection>
    	        <web-resource-name>admin</web-resource-name>
    	        <url-pattern>/admin/*</url-pattern>
    	    </web-resource-collection>
    	    <auth-constraint>
                <role-name>administration</role-name>
            </auth-constraint>
    	</security-constraint>
     
    	<!-- Define the Login Configuration for this Application -->
    	<login-config>
    		<auth-method>BASIC</auth-method>
    		<realm-name>thetest Application</realm-name>
    	</login-config>

    dans tomcat-users.xml j'ai ajouté cette ligne pour le test :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <user name="admin1" password="admin1" roles="administration" />

    Quand je clic sur le lien admin/rechercher.xhtml y'a aucune contrainte qui bloque l'accès

    Je me suis basé de ce tuto :

    http://www.oxxus.net/tutorials/tomcat/security-realms

    et celui la aussi :

    http://tomcat.apache.org/tomcat-7.0-...ml#MemoryRealm

    Que dois-je ajoutée ou changer ?

    Merci

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Là, je ne vois pas, si ton web.xml est celui que tu montres, il devrait au minimum te présenter une popup de login.
    C'est bien ce qui est déployé sur le serveur Tomcat ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    Sincerement, je ne suis pas sur que celui qui est changer est bien ce qui est deployé.

    Voici en ci-joint la capture d'ecran de mon workspace eclipse avec fichier server modifié :

    Nom : eclipse-server.PNG
Affichages : 298
Taille : 38,2 Ko

    J'ai changer le web.xml du tomcat et de l'appli.

    Comment savoir si c'est le bon ?

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    La vue ne me dit pas grand chose, c'est quel type de projet ? Maven ?
    J'ai l'habitude d'utiliser la vue Java sur des projets "Dynamic Web Projet" et elle ne se présente pas comme ça...
    Ceci dit, je suppose tout de même que c'est le web.xml de ton projet qui est maître

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    Oui c'est un projet maven.

    Et j'ai mis la <security-constraint> dans les deux web.xml (server et appli)

    est c'est une vue java

    Nom : java-ec.PNG
Affichages : 295
Taille : 9,5 Ko

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Je suis aveugle ou je ne vois pas bien... mais la structure d'un projet web avec la vue java devrait ressembler à ceci
    Nom : WebProjet.png
Affichages : 290
Taille : 7,3 Ko
    Et comme il y a un pom.xml, ça me fait penser à un projet Maven

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    Dans les deux cas, j'ai aucune popup pour la saisie des identifiants.

    je confirme c'est un projet maven

    Dois-je passer a une connexion avec une base de donnée ?

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Tu peux regarder le projet exemple en pièce jointe, il fonctionne parfaitement sur Tomcat7 en ajoutant ces lignes dans tomcat-users.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <role rolename="admin"/>
    <user password="obu" roles="ADMIN" username="obu"/>
    Fichiers attachés Fichiers attachés

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    Merci.

    Je vais tester cela

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Juste une précision, avec le type BASIC, la question n'est posée qu'une seule fois, il faut fermer le navigateur entièrement pour y avoir accès à nouveau.

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    Ca marche toujours pas.

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Ben là, tu as un sérieux problème
    J'ai testé ce code sur mon serveur Tomcat7 et ça fonctionne très bien

    Peux-tu montrer ton fichier server.xml ?

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    voici le fichier server.xml

    Code xml : 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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    <?xml version="1.0" encoding="UTF-8"?>
    <!--
      Licensed to the Apache Software Foundation (ASF) under one or more
      contributor license agreements.  See the NOTICE file distributed with
      this work for additional information regarding copyright ownership.
      The ASF licenses this file to You under the Apache License, Version 2.0
      (the "License"); you may not use this file except in compliance with
      the License.  You may obtain a copy of the License at
     
          http://www.apache.org/licenses/LICENSE-2.0
     
      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      See the License for the specific language governing permissions and
      limitations under the License.
    --><!-- Note:  A "Server" is not itself a "Container", so you may not
         define subcomponents such as "Valves" at this level.
         Documentation at /docs/config/server.html
     --><Server port="8005" shutdown="SHUTDOWN">
      <Listener className="org.apache.catalina.startup.VersionLoggerListener"/>
      <!-- Security listener. Documentation at /docs/config/listeners.html
      <Listener className="org.apache.catalina.security.SecurityListener" />
      -->
      <!--APR library loader. Documentation at /docs/apr.html -->
      <Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
      <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
      <Listener className="org.apache.catalina.core.JasperListener"/>
      <!-- Prevent memory leaks due to use of particular java/javax APIs-->
      <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
      <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
     
      <!-- Global JNDI resources
           Documentation at /docs/jndi-resources-howto.html
      -->
      <GlobalNamingResources>
        <!-- Editable user database that can also be used by
             UserDatabaseRealm to authenticate users
        -->
        <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
      </GlobalNamingResources>
     
      <!-- A "Service" is a collection of one or more "Connectors" that share
           a single "Container" Note:  A "Service" is not itself a "Container",
           so you may not define subcomponents such as "Valves" at this level.
           Documentation at /docs/config/service.html
       -->
      <Service name="Catalina">
     
        <!--The connectors can use a shared executor, you can define one or more named thread pools-->
        <!--
        <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
            maxThreads="150" minSpareThreads="4"/>
        -->
     
     
        <!-- A "Connector" represents an endpoint by which requests are received
             and responses are returned. Documentation at :
             Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
             Java AJP  Connector: /docs/config/ajp.html
             APR (HTTP/AJP) Connector: /docs/apr.html
             Define a non-SSL HTTP/1.1 Connector on port 8080
        -->
        <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
        <!-- A "Connector" using the shared thread pool-->
        <!--
        <Connector executor="tomcatThreadPool"
                   port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
        -->
        <!-- Define a SSL HTTP/1.1 Connector on port 8443
             This connector uses the BIO implementation that requires the JSSE
             style configuration. When using the APR/native implementation, the
             OpenSSL style configuration is required as described in the APR/native
             documentation -->
        <!--
        <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
                   maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
                   clientAuth="false" sslProtocol="TLS" />
        -->
     
        <!-- Define an AJP 1.3 Connector on port 8009 -->
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
     
     
        <!-- An Engine represents the entry point (within Catalina) that processes
             every request.  The Engine implementation for Tomcat stand alone
             analyzes the HTTP headers included with the request, and passes them
             on to the appropriate Host (virtual host).
             Documentation at /docs/config/engine.html -->
     
        <!-- You should set jvmRoute to support load-balancing via AJP ie :
        <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
        -->
        <Engine defaultHost="localhost" name="Catalina">
     
          <!--For clustering, please take a look at documentation at:
              /docs/cluster-howto.html  (simple how to)
              /docs/config/cluster.html (reference documentation) -->
          <!--
          <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
          -->
     
          <!-- Use the LockOutRealm to prevent attempts to guess user passwords
               via a brute-force attack -->
          <Realm className="org.apache.catalina.realm.LockOutRealm">
            <!-- This Realm uses the UserDatabase configured in the global JNDI
                 resources under the key "UserDatabase".  Any edits
                 that are performed against this UserDatabase are immediately
                 available for use by the Realm.  -->
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
          </Realm>
     
          <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
     
            <!-- SingleSignOn valve, share authentication between web applications
                 Documentation at: /docs/config/valve.html -->
            <!--
            <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
            -->
     
            <!-- Access log processes all example.
                 Documentation at: /docs/config/valve.html
                 Note: The pattern used is equivalent to using pattern="common" -->
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log." suffix=".txt"/>
     
          <Context docBase="app02" path="/app02" reloadable="true" source="org.eclipse.jst.jee.server:app02"/></Host>
        </Engine>
      </Service>
    </Server>

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Je ne vois rien de spécial qui empêche le système de fonctionner, mais là, tu n'as pas mon application déployée.
    As-tu fais l'essai avec mon application de test ?

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    J'arrive pas a importer l'application sur eclipse.

    J'esseye de crée un projet simple

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    J'ai juste mis les sources, du coup, tu crées ton Dynamic Web Project normalement et tu copies les sources dans ton projet.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [2.x] Protéger l'accès à des fichiers uploadés
    Par dnd888 dans le forum Symfony
    Réponses: 4
    Dernier message: 24/12/2012, 19h03
  2. Protéger l'accès direct à un fichier web
    Par tidus_6_9_2 dans le forum 4D
    Réponses: 6
    Dernier message: 31/05/2012, 15h40
  3. Protéger l'accès à un fichier
    Par DiverSIG dans le forum Apache
    Réponses: 18
    Dernier message: 20/10/2011, 12h02
  4. Réponses: 4
    Dernier message: 04/03/2010, 16h12
  5. Réponses: 2
    Dernier message: 25/02/2007, 14h50

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