OVH Cloud OVH Cloud

[Tomcat] sécurité

6 réponses
Avatar
cpuaud
Bonjour,

j'utilise tomcat 4.1.19 et son plugin pour Eclipse 3. Je voudrais
utiliser l'authentification. Dans mon web.xml j'ai ajouté :
***
<security-constraint>
<web-resource-collection>
<web-resource-name>Entire Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>ADM_CENTRAL</role-name>
</auth-constraint>
</security-constraint>

<!-- Define the Login Configuration for this Application -->
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>MyRealm</realm-name>
</login-config>

<security-role>
<description>ADM_CENTRAL</description>
<role-name>ADM_CENTRAL</role-name>
</security-role>

Et dans le server.xml :
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
drivername="oracle.jdbc.driver.OracleDriver"
connectionurl="jdbc:oracle:thin:@monserveur:1521:BASE"
connectionName="toto" connectionPassword="totopwd"
usertable="UTILISATEURS" usernamecol="LOGIN_UTILISATEUR"
usercredcol="PASSWORD" userroletable="AFFECTATIONPROFILS"
rolenamecol="CODE_PROFIL"/>
***
Ma base me semble correcte et correspond à ce qu'il y a écrit
ci-dessus.
Lorsque j'essaie de lancer Tomcat, j'ai l'erreur suivante (et il ne se
lance pas) :
***
Démarrage du service Tomcat-Standalone
Apache Tomcat/4.1.29
Catalina.start: LifecycleException: Exception lors de l''ouverture de
la base de données: java.sql.SQLException
LifecycleException: Exception lors de l''ouverture de la base de
données: java.sql.SQLException
at org.apache.catalina.realm.JDBCRealm.start(JDBCRealm.java:681)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1173)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:363)
at org.apache.catalina.core.StandardService.start(StandardService.java:497)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2190)
at org.apache.catalina.startup.Catalina.start(Catalina.java:512)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
----- Root Cause -----
java.sql.SQLException
at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:606)
at org.apache.catalina.realm.JDBCRealm.start(JDBCRealm.java:679)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1173)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:363)
at org.apache.catalina.core.StandardService.start(StandardService.java:497)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2190)
at org.apache.catalina.startup.Catalina.start(Catalina.java:512)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
Arrêt du service Tomcat-Standalone
Catalina.stop: LifecycleException: Le connecteur Coyote n''a pas été
démarré
LifecycleException: Le connecteur Coyote n''a pas été démarré
at org.apache.coyote.tomcat4.CoyoteConnector.stop(CoyoteConnector.java:1231)
at org.apache.catalina.core.StandardService.stop(StandardService.java:546)
at org.apache.catalina.core.StandardServer.stop(StandardServer.java:2225)
at org.apache.catalina.startup.Catalina.start(Catalina.java:543)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
***

Et une autre question

Je veux ajouter un paramètre à la JVM
(-Djava.security.auth.login.config=C:/monfichier.conf). Le security
manager fonctionne.
Si mon fichier n'est pas à l'endroit indiqué, je n'ai aucun message
d'erreur lors du lancement de tomcat. Comment savoir s'il est
correctement pris en compte ?
Rem : si je met comme paramètre "toto=titi" j'ai un message d'erreur.
J'ai essayé de mettre "==" à la place de "=" mais cela semble ne rien
changer.
Merci d'avance.

Christophe

6 réponses

Avatar
JCR
Question bête :
tu as bien mis le jar du pilote jdbc dans les lib de ton appli ?
Avatar
cpuaud
"JCR" wrote in message news:<40fea64d$0$29422$...
Question bête :
tu as bien mis le jar du pilote jdbc dans les lib de ton appli ?


Oui. J'ai même téléchargé la dernière version.

Avatar
TestMan
Essaye de te connecter avec le même driver et les mêmes paramètres de
connection sous un autre outil :
http://squirrel-sql.sourceforge.net/

Si ça fonctionne ya fort à parrier que c soit ton shéma de base qui
n'est pas conforme à l'attente de Tomcat ou plus simplement vérifie si
le jar du client thin est bien dans server/lib ...

A+
TM

Christophe Puaud wrote:

Bonjour,

j'utilise tomcat 4.1.19 et son plugin pour Eclipse 3. Je voudrais
utiliser l'authentification. Dans mon web.xml j'ai ajouté :
***
<security-constraint>
<web-resource-collection>
<web-resource-name>Entire Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>ADM_CENTRAL</role-name>
</auth-constraint>
</security-constraint>

<!-- Define the Login Configuration for this Application -->
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>MyRealm</realm-name>
</login-config>

<security-role>
<description>ADM_CENTRAL</description>
<role-name>ADM_CENTRAL</role-name>
</security-role>

Et dans le server.xml :
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
drivername="oracle.jdbc.driver.OracleDriver"
connectionurl="jdbc:oracle:thin:@monserveur:1521:BASE"
connectionName="toto" connectionPassword="totopwd"
usertable="UTILISATEURS" usernamecol="LOGIN_UTILISATEUR"
usercredcol="PASSWORD" userroletable="AFFECTATIONPROFILS"
rolenamecol="CODE_PROFIL"/>
***
Ma base me semble correcte et correspond à ce qu'il y a écrit
ci-dessus.
Lorsque j'essaie de lancer Tomcat, j'ai l'erreur suivante (et il ne se
lance pas) :
***
Démarrage du service Tomcat-Standalone
Apache Tomcat/4.1.29
Catalina.start: LifecycleException: Exception lors de l''ouverture de
la base de données: java.sql.SQLException
LifecycleException: Exception lors de l''ouverture de la base de
données: java.sql.SQLException
at org.apache.catalina.realm.JDBCRealm.start(JDBCRealm.java:681)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1173)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:363)
at org.apache.catalina.core.StandardService.start(StandardService.java:497)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2190)
at org.apache.catalina.startup.Catalina.start(Catalina.java:512)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
----- Root Cause -----
java.sql.SQLException
at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:606)
at org.apache.catalina.realm.JDBCRealm.start(JDBCRealm.java:679)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1173)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:363)
at org.apache.catalina.core.StandardService.start(StandardService.java:497)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2190)
at org.apache.catalina.startup.Catalina.start(Catalina.java:512)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
Arrêt du service Tomcat-Standalone
Catalina.stop: LifecycleException: Le connecteur Coyote n''a pas été
démarré
LifecycleException: Le connecteur Coyote n''a pas été démarré
at org.apache.coyote.tomcat4.CoyoteConnector.stop(CoyoteConnector.java:1231)
at org.apache.catalina.core.StandardService.stop(StandardService.java:546)
at org.apache.catalina.core.StandardServer.stop(StandardServer.java:2225)
at org.apache.catalina.startup.Catalina.start(Catalina.java:543)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
***

Et une autre question

Je veux ajouter un paramètre à la JVM
(-Djava.security.auth.login.config=C:/monfichier.conf). Le security
manager fonctionne.
Si mon fichier n'est pas à l'endroit indiqué, je n'ai aucun message
d'erreur lors du lancement de tomcat. Comment savoir s'il est
correctement pris en compte ?
Rem : si je met comme paramètre "toto=titi" j'ai un message d'erreur.
J'ai essayé de mettre "==" à la place de "=" mais cela semble ne rien
changer.
Merci d'avance.

Christophe


Avatar
cpuaud
C'est quoi "thin" ? Il est dans quel jar ?

Le reste de mon appli arrive à accéder à la base, mais pas struts.

TestMan wrote in message news:<4106d393$0$1890$...
Essaye de te connecter avec le même driver et les mêmes paramètres de
connection sous un autre outil :
http://squirrel-sql.sourceforge.net/

Si ça fonctionne ya fort à parrier que c soit ton shéma de base qui
n'est pas conforme à l'attente de Tomcat ou plus simplement vérifie si
le jar du client thin est bien dans server/lib ...

A+
TM



Avatar
cpuaud
Mon erreur se passe avant l'accès à la base (j'ai enlevé les pilotes
Oracle et ça ne change rien) :
Catalina.start: LifecycleException: Exception lors de l''ouverture de
la base de données: java.sql.SQLException
LifecycleException: Exception lors de l''ouverture de la base de
données: java.sql.SQLException
at org.apache.catalina.realm.JDBCRealm.start(JDBCRealm.java:681)


Avatar
cpuaud
Erreur trouvée : le fichier ojdbc.jar était dans le common/lib et
server/lib. Il ne doit être que dans le server/lib.