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 :

[JGuard] pour comprendre...


Sujet :

Sécurité Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut [JGuard] pour comprendre...
    Bonjour,

    J'aimerais me lancer dans l'utilisation de JGuard mais il se trouve que après quelques heures de tests en tout genres (installation des applications d'exemple, lecture de la maigre documentation,etc.) je suis encore plus perdu qu'avant.

    J'en appel donc à ceux qui ont peut-être déjà utilisé ce framework. Connaissez vous un bon tuto, une vrai documentation ou une explication suffisament claire ?
    Ou alors, un autre outil qui fait la même chose mais en plus simple... ?

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Par défaut
    bonjour,
    faisant partie du projet jGuard, je pense pouvoir t'aider.

    quels sont tes problèmes et tes questions?
    nous sommes conscients que la documentation doit être largement améliorée.
    pourrais-tu nous indiquer précisément sur quelles parties se concentrer en priorité?


    cordialement,

    Charles(jGuard team).

  3. #3
    Membre éclairé Avatar de mamiberkof
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Avril 2005
    Messages : 290
    Par défaut
    Citation Envoyé par diabolo512
    bonjour,
    faisant partie du projet jGuard, je pense pouvoir t'aider.

    quels sont tes problèmes et tes questions?
    nous sommes conscients que la documentation doit être largement améliorée.
    en faite oui, y a pas bcp de doc dessus , j'aimerai savoir est t il possible avec jguard de faire quelque chose comme la restriction d'acces au pages ,voir meme ,à des lignes dans la meme pages( par exmple ,une rubrique 'Administration', qui devait apparaitre pour l'admin et pas pour le client (maniere comme les roles de Basic de tomcat ou via un formulaire et une connexion BD )

    cordialement

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut
    Si j'ai bien compirs, JGuard repose sur JAAS. On peut donc decouper son utilisation en deux categories : Authentification et Autorisations.

    Ces deux parties m'intéresse. Je souhaite pouvoir stocker les infos sur les droits d'acces dans une base de données afin de pouvoir les modifier de n'importe ou depuis une application d'administration distante.
    Quant aux utilisateurs je souhaiterai pouvoir les récupérer depuis une autre base distante voir pourquoi pas d'un annuaire LDAP...

    En fait, ma question est : sur quel modèle fonctionne JGuard ? En regardant un peu les fichiers xml fournis avec la distribution, j'ai cru déterminer le modèle suivant :
    --> une permission est associée à des actions
    --> un domaine est associé à des permissions
    --> un rôle est associé à des domaines
    --> un utilisateur est associé à un role
    Je ne sait pas si c'est vraiment ça mais en tout cas ce modèle me suffirait. Malheureusement, je ne retrouve pas ça dans la base de donnée que j'ai pu recréer à partir des fichiers .properties contenus dans l'application d'exemple.

    Par exemple, pour toute mes appli J2EE, je fait un accés aux bases de données à l'aide d'Hibernate. Si je veux administrer les permissions, domaines, roles, etc., est ce que JGuard me fourni déjà un moyen d'accès simple pour l'administration ou bien est ce que je dois refaire mon mapping Hibernate et recréer mes objets ?

    Voila, j'espere que mes questions ne sont pas trop incompréhensibles. Merci.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Par défaut
    j'aimerai savoir est t il possible avec jguard de faire quelque chose comme la restriction d'acces au pages ,voir meme ,à des lignes dans la meme pages( par exmple ,une rubrique 'Administration', qui devait apparaitre pour l'admin et pas pour le client (maniere comme les roles de Basic de tomcat ou via un formulaire et une connexion BD )
    la réponse est oui.
    une webapp d'exemple est fournie avec jGuard pour illustrer cela.
    celle-ci montre en exemple, l'utilisation possible de jGuard avec Struts (jGuard n'est pas lié à l'utilisation de Struts).
    les utilisateurs enregistrés (dans une base de données, XML, ou LDAP), ont des rôles.
    ces rôles définis, ont des permissions, correspondant dans l'exemple à des urls.
    ainsi, suivant les rôles de l'utilisateur, celui-ci pourra avoir accès à la page voulue ou non.
    l'affichage de bouts de pages est aussi supporté via une libraire de tags jsp fournie.
    (cf http://jguard.xwiki.com/xwiki/bin/view/Doc/TagLibs).
    les rôles et permissions d'une applications peuvent aussi être stockés dans une base de données ou dans un fichier XML.

    cela répond-il à vos questions?

    Charles(jGuard team).

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut
    En ce qui concerne les rôles et permissions d'une application, j'ai bien compris comment ils étaient stockés dans les fichiers XML et je pense avoir créé les bonnes tables pour les stocker en base de donnée.

    Par contre, JGuard fournit-il une couche d'accès à ces données (qu'elles soient en base ou en XML) ?
    Actuellement je cherche à pouvoir modifier ces données depuis une application distante. Est ce que je suis obligé de me faire ma propre couche d'accès aux données pour pouvoir les modifier ?

    D'autre part, j'arrive à initialiser ma base de donnée gérant la partie autorisation à partir d'un fichier XML prérempli. Je fait ceci dans le fichier de config jGuard :
    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
     <authorizationManager>net.sf.jguard.authorization.JdbcAuthorizationManager</authorizationManager>
    <authorizationManagerOptions>
    <option>
    <name>fileLocation</name>
    <value>WEB-INF/conf/jGuard/jGuardPrincipalsPermissions.xml</value>
    </option>
    <option>
    <name>authorizationDriver</name>
    <value>com.mysql.jdbc.Driver</value>
    </option>
    <option>
    <name>authorizationUrl</name>
    <value>jdbc:mysql://localhost/jguard</value>
    </option>
    <option>
    <name>authorizationLogin</name>
    <value>login</value>
    </option>
    <option>
    <name>authorizationPassword</name>
    <value>password</value>
    </option>
    <option>
    <name>debug</name>
    <value>true</value>
    </option>
    <option>
    <name>fileLocation</name>
    <value>WEB-INF/conf/jGuard/authorization.mysql.properties</value>
    </option>
    </authorizationManagerOptions>
    Cela fonctionne bien et toute la configuration contenue dans mon jGuardPrincipalsPermissions.xml se retrouve dans mes tables.

    Par contre, existe-t-il un moyen de faire pareil avec le fichier jGuardUsersPrincipals.xml ?

    Merci

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Par défaut
    bonjour,
    tu fais allusion au fait que des données initialement persistées dans un fichier xml, peuvent être importées dans une base de données.
    pour la partie autorisations, cela fonctionne dans la 0.70 comme tu as pu le voir.
    pour la partie authentication, cela fonctionne à partir de la 0.80 beta 1 (la 0.80 beta2 sort aujourd'hui).
    concernant la manipulation des Subjects(utilisateurs), principals(roles),domaines(groupe de permissions), et permissions, tout ceci s'effectue via les objets authenticationManager et authorizationMAnager.
    la webapp fournit permet d'ailleurs de les modifier à chaud (exemple plus approfondi dans la webapp de la 0.80 beta2).
    donc toutes les entités sont déjà manipulables via ces deux objets(récupérables dans la webapp car stockés dans le contexte application avec pour clés 'authenticationManager' et 'authorizationManager').
    petite info: un domaine n'est qu'un regroupeemnt fonctionnel de permissions (exemple:toutes les permissions concernant les commandes).
    par contre, un role peut contenir des permissions spécifiques, ou des domaines entiers pour aller plus vite.

    est-ce que cela rpond à toutes tes questions?

    Charles(jGuard team).

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut
    Oui, merci, cela m'aide un peu. J'image que je pourrai plus facilement modifier mes objets avec AutheticationManager et AuthorizationManager. Je vais regarder ça de plus près. En fait, si j'ai bien compris, ce sont ces méthodes qui gèrent l'accés au données ?

    Par contre, je garde toujours à l'esprit de pouvoir faire une application d'administration à partir de laquelle je pourrai modifier les regles d'autentification et d'autorisations de différentes applications. Il me sera donc impossible d'accéder aux AuthenticationManager et AutorizationManager de ces applications. Y'a-t-il un moyen simple d'accéder aux données contenues en base ? Sinon, je développerai un petit module qui y accéde via Hibernate mais je ne voudrait pas le faire si ça existe déjà...

    En tout cas merci pour ton aide.

    PS : Sinon, existe-t-il une javaDoc quelque part stp ?

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Par défaut
    Gob4 Oui, merci, cela m'aide un peu. J'image que je pourrai plus facilement modifier mes objets avec AutheticationManager et AuthorizationManager. Je vais regarder ça de plus près. En fait, si j'ai bien compris, ce sont ces méthodes qui gèrent l'accés au données ?
    ce sont des classes de haut niveau qui permettent de manipuler les objets persités tant en base qu'en fichier xml.

    Par contre, je garde toujours à l'esprit de pouvoir faire une application d'administration à partir de laquelle je pourrai modifier les regles d'autentification et d'autorisations de différentes applications
    => regarde du coté de la webapp d'exemple de jGaurd qui sera un bon point de départ (fourni des fonctions d'admin).

    Il me sera donc impossible d'accéder aux AuthenticationManager et AutorizationManager de ces applications.
    => non, si tu mets les mêmes paramètres pour initialiser ces deux objets authenticationManager et authorizationManager.

    pour al javadoc, regarde le wiki (la javadoc de la 0.70 est par exemple ici: http://jguard.sourceforge.net/v0.70/javadoc/)

    amicalement,

    Charles.(jGuard team).

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut
    Salut,

    je reviens à la charge sur JGuard...

    J'ai l'erreur suivante au demarrage de mon application sous Tomcat 5.5 :

    java.util.MissingResourceException: Can't find resource for bundle sun.security.util.Resources, key unable to instantiate LoginModule:
    at java.util.ResourceBundle.getObject(
    ResourceBundle.java:325)
    at java.util.ResourceBundle.getObject(
    ResourceBundle.java:322)
    at java.util.ResourceBundle.getString(
    ResourceBundle.java:285)
    at sun.security.util.ResourcesMgr.getString(
    ResourcesMgr.java:36)
    at javax.security.auth.login.LoginContext.invoke(
    LoginContext.java:804)
    at javax.security.auth.login.LoginContext.access$000(
    LoginContext.java:186)
    at javax.security.auth.login.LoginContext$4.run(
    LoginContext.java:683)
    at java.security.AccessController.doPrivileged(
    Native Method)
    at javax.security.auth.login.LoginContext.invokePriv(
    LoginContext.java:680)
    at javax.security.auth.login.LoginContext.login(
    LoginContext.java:579)
    at net.sf.jguard.authentication.AuthenticationUtils.authenticate(
    AuthenticationUtils.java:81)
    at net.sf.jguard.authentication.AuthenticationUtils.authenticate(
    AuthenticationUtils.java:147)
    at net.sf.jguard.filters.AccessFilter.authenticate(
    AccessFilter.java:678)
    at net.sf.jguard.filters.AccessFilter.logonProcess(
    AccessFilter.java:504)
    at net.sf.jguard.filters.AccessFilter.doFilter(
    AccessFilter.java:314)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
    ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(
    ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(
    StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(
    StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(
    StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(
    ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(
    StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(
    CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(
    Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(
    Http11BaseProtocol.java:667)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
    PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
    LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
    ThreadPool.java:684)
    at java.lang.Thread.run(
    Thread.java:595)

    Est ce que cette erreur te dis quelque chose ? Merci.

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Par défaut
    Bonjour,
    afin de t'aider rapidement, pourrais-tu activer les logs de jGuard au niveau debug (à effectuer dans le fichier log4j.properties), et poster toutes les logs générées au démarrage ?
    autres questions:
    quelles versions de java, de serveur d'applications et de jGaurd utilises-tu?sur windows?sur linux?sur Mac?
    as-tu bien mis dans le répertoire de librairies partagées le jar jGuard-jvm.jar?

    amicalement,

    Charles(jGuard team).

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut
    Salut,

    Alors j'ai beaucoup de mal a récuperer le log en mode debug. La console Eclipse sature et j'arrive pas a retrouver le fichier quand j'utilise un FileAppender...

    En tout cas je peux te dire que le probleme survient lorsque la logonURI definie dans jguardConfiguration.xml est appelée :


    DEBUG - uriWithQuery=/servlet?action=Logon
    INFO - user is null : subject is null implies logonProcess phase
    DEBUG - authorizationHeader=null
    INFO - user is null : BASIC authentication subject is null implies authenticate phase
    ERROR - "Servlet.service()" pour la servlet servlet a généré une exception

    java.util.MissingResourceException
    : Can't find resource for bundle sun.security.util.Resources, key unable to instantiate LoginModule: ...

    Sinon, j'utilise Eclipse WTP 3.1, sous Windows xp, une jdk1.4.2_05, Tomcat 5.5 et parfois 5.0. jguard 0.70.2.

    Est ce que cela t'aide un peu ?

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Par défaut
    je pense que le problème de log vient peut-être du fait que tu as défini tous les packages au niveau debug.
    il faudrait seulement définir le niveau debug pour les packages commencant par 'net.sf.jguard'.
    le fait de voir la log est important, car sinon cela va être difficile de t'aider....

    peux-tu m'en dire plus, ou publier la log, ou les fichiers de configuration?
    utilises-tu des servlets directement ou Struts?


    amicalement,

    Charles.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut
    Ok j'ai ça :


    DEBUG - server info = Apache Tomcat/5.5.15
    DEBUG - servletContextName=test_jguard
    DEBUG - servlet Real Path=D:\Eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp3\webapps\test_jguard\
    DEBUG - current Policy=sun.security.provider.PolicyFile@1094d48
    DEBUG - webappHomePath=file://D:/Eclipse/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp3/webapps/test_jguard/
    DEBUG - configurationLocation=file://D:\Eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp3\webapps\test_jguard\WEB-INF\conf\jGuard\jGuardConfiguration.xml
    DEBUG - location=file://////D:\Eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp3\webapps\test_jguard\WEB-INF\conf\jGuard\jGuardConfiguration.xml
    12 mai 2006 12:07:47 net.sf.jguard.security.PolicyHelper installPolicy
    INFO: init() - JGuardPolicy is not set as the policy provider . the actual policy provider is 'sun.security.provider.PolicyFile' which is different of 'net.sf.jguard.security.JGuardPolicy'
    12 mai 2006 12:07:47 net.sf.jguard.security.PolicyHelper installPolicy
    INFO: init() - if you want the jGuard policy 'governs' all java applications (one choice among others described in the jGuard documentation),
    12 mai 2006 12:07:47 net.sf.jguard.security.PolicyHelper installPolicy
    INFO: init() - please correct the 'policy.provider' property (policy.provider=net.sf.jguard.security.JGuardPolicy) in your 'java.security' file,
    12 mai 2006 12:07:47 net.sf.jguard.security.PolicyHelper installPolicy
    INFO: init() - located in this directory: C:\Java\jdk1.5.0_06\jre\lib\security\
    12 mai 2006 12:07:47 net.sf.jguard.security.JGuardPolicy <init>
    INFO: ####### loading jGuardPolicy 0.70.2 ###########
    12 mai 2006 12:07:47 net.sf.jguard.security.ConfigurationHelper installWithOldConfig
    INFO: JGuardConfiguration is set
    DEBUG - applicationName=test_jguard
    DEBUG - authenticationOptions={authenticationManagerOptions={authenticationPassword=root, authenticationUrl=jdbc:mysql://192.168.11.28/jguard_users, authenticationLogin=root, authenticationDriver=com.mysql.jdbc.Driver}, authenticationFailedURI=/failed.jsp, accessDeniedURI=/servlet?action=AccessDenied, loginModules=[{loginModuleOptions={debug=false, passwordField=password, loginField=login}, flag=REQUIRED, name=net.sf.jguard.loginmodules.JdbcLoginModule}], indexURI=index.jsp, authenticationManager=net.sf.jguard.authentication.JdbcAuthenticationManager, logonProcessURI=/servlet?action=LogonProcess, registerURI=/servlet?action=Registration, registerProcessURI=/servlet?action=RegistrationProcess, debug=true, authScheme=BASIC, passwordField=password, logonURI=/servlet?action=Logon, logoffURI=/servlet?action=Logoff, includeOldConfig=false}
    DEBUG - debugOnAuthentication=true
    DEBUG - Configuration class =net.sf.jguard.security.JGuardConfiguration
    INFO - authenticationManagerImpl=net.sf.jguard.authentication.JdbcAuthenticationManager
    DEBUG - AuthenticationConnectionFactoryOptions={authenticationPassword=root, authenticationUrl=jdbc:mysql://192.168.11.28/jguard_users, authenticationLogin=root, applicationName=test_jguard, authenticationDriver=com.mysql.jdbc.Driver}
    DEBUG - authorizationManagerOptions={fileLocation=file://D:/Eclipse/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp3/webapps/test_jguard/WEB-INF/conf/jGuard/authorization.mysql.properties, debug=true, applicationName=test_jguard, authorizationManager=net.sf.jguard.authorization.JdbcAuthorizationManager, authorizationUrl=jdbc:mysql://192.168.11.28/jguard_test, authorizationPassword=password, authorizationDriver=com.mysql.jdbc.Driver, authorizationLogin=root}
    DEBUG - authorizationManagerOptions={fileLocation=file://D:/Eclipse/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp3/webapps/test_jguard/WEB-INF/conf/jGuard/authorization.mysql.properties, debug=true, applicationName=test_jguard, authorizationManager=net.sf.jguard.authorization.JdbcAuthorizationManager, authorizationUrl=jdbc:mysql://192.168.11.28/jguard_test, authorizationPassword=password, authorizationDriver=com.mysql.jdbc.Driver, authorizationLogin=root}
    DEBUG - query2=
    DEBUG - sequence already exists Syntax error or access violation, message from server: "Query was empty"
    DEBUG - query2=
    DEBUG - sequence already exists Syntax error or access violation, message from server: "Query was empty"
    DEBUG - query2=
    DEBUG - sequence already exists Syntax error or access violation, message from server: "Query was empty"
    DEBUG - query3=alter table jg_principal_permission add constraint fk_permission_principal foreign key (principal_id) references jg_app_principal(id)
    DEBUG - foreign keys already exists General error, message from server: "Can't create table '.\jguard_test\#sql-604_11f.frm' (errno: 121)"
    DEBUG - query3=alter table jg_principal_permission add constraint fk_principal_permission foreign key (permission_id) references jg_permission(id)
    DEBUG - foreign keys already exists General error, message from server: "Can't create table '.\jguard_test\#sql-604_11f.frm' (errno: 121)"
    DEBUG - query3=alter table jg_principal_domain add constraint fk_domain_principal foreign key (principal_id) references jg_app_principal(id)
    DEBUG - foreign keys already exists General error, message from server: "Can't create table '.\jguard_test\#sql-604_11f.frm' (errno: 121)"
    DEBUG - query3=alter table jg_principal_domain add constraint fk_principal_domain foreign key (domain_id) references jg_domain(id)
    DEBUG - foreign keys already exists General error, message from server: "Can't create table '.\jguard_test\#sql-604_11f.frm' (errno: 121)"
    DEBUG - query3=alter table jg_permission add constraint fk_permission_domain foreign key (domain_id) references jg_domain(id)
    DEBUG - foreign keys already exists General error, message from server: "Can't create table '.\jguard_test\#sql-604_11f.frm' (errno: 121)"
    DEBUG - query3=alter table jg_principal_hierarchy add constraint fk_principal_principal_hierarchy foreign key (principal_asc_id) references jg_app_principal(id)
    DEBUG - foreign keys already exists General error, message from server: "Can't create table '.\jguard_test\#sql-604_11f.frm' (errno: 121)"
    DEBUG - query3=alter table jg_principal_hierarchy add constraint fk_principal_principal_hierarchy2 foreign key (principal_desc_id) references jg_app_principal(id)
    DEBUG - foreign keys already exists General error, message from server: "Can't create table '.\jguard_test\#sql-604_11f.frm' (errno: 121)"
    INFO - there are some principals in database
    INFO - Principal guest inherites from principal admin
    DEBUG - uriWithQuery=/servlet?action=Logon
    INFO - user is null : subject is null implies logonProcess phase
    DEBUG - authorizationHeader=null
    INFO - user is null : BASIC authentication subject is null implies authenticate phase
    ERROR - "Servlet.service()" pour la servlet servlet a généré une exception

    java.util.MissingResourceException
    : Can't find resource for bundle sun.security.util.Resources, key unable to instantiate LoginModule:
    Les erreurs "Can't create table '.\jguard_test\#sql-604_11f.frm' (errno: 121)" viennent d'un bug de MySQL concernant les contraintes sur cleés etrangeres mais je ne pense pas que ce soit lié.

    ...

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut
    Mon fichier de config jguard :


    <configuration>

    <authentication>


    <debug>true</debug>


    <passwordField>password</passwordField>


    <indexURI>index.jsp</indexURI>


    <authenticationFailedURI>/failed.jsp</authenticationFailedURI>

    <logonURI>/servlet?action=Logon</logonURI>


    <logonProcessURI>/servlet?action=LogonProcess</logonProcessURI>

    <registerURI>/servlet?action=Registration</registerURI>

    <registerProcessURI>/servlet?action=RegistrationProcess</registerProcessURI>


    <logoffURI>/servlet?action=Logoff</logoffURI>

    <accessDeniedURI>/servlet?action=AccessDenied</accessDeniedURI>

    <authScheme>BASIC</authScheme>

    <includeOldConfig>false</includeOldConfig>
    <includeConfigFromJavaParam>false</includeConfigFromJavaParam>

    <includePolicyFromJavaParam>false</includePolicyFromJavaParam>

    <authenticationManager>net.sf.jguard.authentication.JdbcAuthenticationManager</authenticationManager>

    <authenticationManagerOptions>

    <option>

    <name>authenticationUrl</name>

    <value>jdbc:mysql://192.168.11.28/jguard_users</value>

    </option>

    <option>

    <name>authenticationLogin</name>

    <value>root</value>

    </option>

    <option>

    <name>authenticationPassword</name>

    <value>password</value>

    </option>

    <option>

    <name>authenticationDriver</name>

    <value>com.mysql.jdbc.Driver</value>

    </option>

    </authenticationManagerOptions>

    <loginModules>


    <loginModule>

    <name>net.sf.jguard.loginmodules.JdbcLoginModule</name>


    <flag>REQUIRED</flag>

    <loginModuleOptions>

    <option>

    <name>debug</name>

    <value>false</value>

    </option>

    <option>

    <name>loginField</name>

    <value>login</value>

    </option>

    <option>

    <name>passwordField</name>

    <value>password</value>

    </option>

    </loginModuleOptions>

    </loginModule>

    </loginModules>

    </authentication>



  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut
    <authorization>

    <authorizationManager>net.sf.jguard.authorization.JdbcAuthorizationManager</authorizationManager>

    <authorizationManagerOptions>

    <option>

    <name>authorizationDriver</name>

    <value>com.mysql.jdbc.Driver</value>

    </option>
    <option>

    <name>authorizationUrl</name>

    <value>jdbc:mysql://192.168.11.28/jguard_test</value>

    </option>

    <option>

    <name>authorizationLogin</name>

    <value>root</value>

    </option>

    <option>

    <name>authorizationPassword</name>

    <value>password</value>

    </option>

    <option>

    <name>debug</name>

    <value>true</value>

    </option>

    <option>

    <name>fileLocation</name>

    <value>WEB-INF/conf/jGuard/authorization.mysql.properties</value>

    </option>

    </authorizationManagerOptions>

    </authorization>
    </
    configuration>

    Comme tu peux le constater, j'utilise deux bases de données pur l'autentification et les autorisations. A priori elles sont conformes au model qui est proposé dans la distribution 0.70.2 de jguard (mis à part le probleme des clés etrangeres).

    Je n'utilise pas Struts mais directement une servlet dans laquelle je gere les actions suivantes :
    • AccessDenied --> renvoie une page acces denied
    • Logon --> renvoie une page pour se logger
    • Registration --> une page pour se logger

  17. #17
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Par défaut
    en cherchant, apparement les personnes qui ont ce genre de problème ont une JVM 1.3 et non 1.4.
    => jGuard requiert java 1.4 qui a vu l'intégration de JAAS en standard.
    n'utilises-tu pas une version plus ancienne de java?
    si cc'est le cas, tu dois passer au minimum à java 1.4.

    Charles.

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut
    Ouai j'avais trouvé cette reponse à ce probleme aussi mais je suis sur d'etre en 1.4. La 1.3 n'est meme pas installée sur mon PC.

    J'ai egalement verifié que jguard-jvm.jar est bien avec les librairies partagees de Tomcat et c'est bon.

    Lorsque je lance l'application d'exemple fournie avec la distrib de jguard 0.70.2 ça fonctionne. La seule difference est qu'elle utilise des fichiers XML pour definir les principals/permissions et users/principals alors que j'utilise une base de donnees.

  19. #19
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Par défaut
    je pense que l'exception renvoyée par lmysql est propagée et fait planter le loginModule....
    pourrais-tu tester avec postgresql, ou une version de mysql qui ne plante pas?
    ou mieux, si tu as identifié des requêtes d'initialisation de tables qui font tout planter, tu peux les commenter dans le fichier mysql.authenticaiton.properties avec un diese au début de la ligne. cela peut aussi passer comme cela.
    est-ce que cela t'aide?

    Charles.

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut
    Bon,

    J'ai fait un test avec une base Oracle et j'ai la même erreur.
    Effectivement le probleme doit venir du LoginModule. Ce que je ne comprend pas c'est à quoi il sert. dans mon fichier de config je declare :


    <
    loginModule>
    <name>net.sf.jguard.loginmodules.JdbcLoginModule</name>
    <flag>OPTIONAL</flag>
    <loginModuleOptions>
    <option>
    <name>debug</name>
    <value>false</value>
    </option>
    <option>
    <name>loginField</name>
    <value>login</value>
    </option>
    <option>
    <name>passwordField</name>
    <value>password</value>
    </option>
    </loginModuleOptions>
    </loginModule>
    Par contre je copie betement le loginModule fourni en exemple mais je ne vois pas bien à quoi ça correspond... Sachant que j'utilise du jdbcLoginModule, est ce que ma configuration est bonne ?


Discussions similaires

  1. Aide pour comprendre un code
    Par Spacy_green dans le forum Assembleur
    Réponses: 2
    Dernier message: 13/02/2006, 14h22
  2. Aide pour comprendre le code
    Par jfreuff dans le forum Assembleur
    Réponses: 2
    Dernier message: 31/01/2006, 18h54
  3. Conseil livre pour comprendre scripts
    Par Filippo dans le forum Linux
    Réponses: 9
    Dernier message: 13/10/2005, 11h36
  4. Réponses: 4
    Dernier message: 28/07/2005, 17h22

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