2011-11-08 4 views
2

J'essaie de définir une sécurité container managerd comme un domaine pour mon application web (JSF 2.1 + hibernate). J'ai remarqué que Tomcat 7 ne peut utiliser qu'un seul type de domaine à la fois.Tomcat 7.11 JDBCRealm et UserDatabaseRealm ne fonctionnent pas ensemble

Pour utiliser Tomcat dans netbeans (7.0), je dois créer un accout de rôle de gestionnaire de script. En plus de travailler avec Tomcat Manager, j'ai aussi besoin d'un autre rôle. C'est un gros problème pour moi car les tables que j'utilise pour JDBCRealm sont des vues de tables réelles qui stockent des utilisateurs et des rôles et je ne voudrais pas stocker les deux rôles dans la même base de données que mon programme utilise.

Existe-t-il un moyen de faire fonctionner ensemble JDBCRealm et UserDBRealm? Ce serait un soulagement.

est ici le code de server.config:

<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> 

<Realm className="org.apache.catalina.realm.JDBCRealm" 
    driverName="org.gjt.mm.mysql.Driver" 
    connectionURL="jdbc:mysql://localhost:3306/realm?user=login&amp;password=pass" 
    userTable="users" 
    userNameCol="user_name" 
    userCredCol="user_pass" 
    userRoleTable="user_roles" 
    roleNameCol="role_name" /> 

tomcat utilise uniquement le dernier qu'il trouve dans le fichier. Ils fonctionnent très bien séparement

+0

En théorie, vous pouvez créer un domaine personnalisé. – BalusC

+0

Je vais y réfléchir. Au fait, votre blog gouverne. J'ai trouvé beaucoup de réponses à mes problèmes là-bas. – Szajba

Répondre

1

Utilisez un CombinedRealm (doc, javadoc):

mise en œuvre du royaume qui contient un ou plusieurs domaines. L'authentification est tentée pour chaque domaine dans l'ordre dans lequel ils ont été configurés. Si un domaine authentifie l'utilisateur, l'authentification réussit. Lorsque combinant des noms d'utilisateur de domaines doit être unique à travers tous les domaines combinés.

Peut-être que vous utilisez déjà le LockOutRealm (doc, javadoc) qui est une sous-classe de CombinedRealm et il est dans la configuration par défaut de Tomcat.

+1

Oui, j'utilisais LockOutRealm mais les noms d'utilisateurs n'étaient pas uniques dans tous les domaines. Je me suis assuré que mon programme n'utilisera pas les mêmes noms que dans tomcat-users.xml. Fonctionne comme un charme maintenant. Merci beaucoup – Szajba

Questions connexes