Tomcat 7.11 JDBCRealm и UserDatabaseRealm не работают вместе - PullRequest
2 голосов
/ 08 ноября 2011

Я пытаюсь установить безопасность контейнера managerd для моего веб-приложения (JSF 2.1 + hibernate). Я заметил, что Tomcat 7 может использовать одновременно только один тип областей.

Чтобы использовать Tomcat в NetBeans (7.0), я должен создать учетную запись роли менеджера-сценария. Помимо работы с менеджером Tomcat, мне нужна еще одна роль. Это большая проблема для меня, потому что таблицы, которые я использую для JDBCRealm, являются представлениями из реальных таблиц, в которых хранятся пользователи и роли, и я не хотел бы хранить обе роли в одной и той же базе данных, которую использует моя программа.

Есть ли способ заставить JDBCRealm и UserDBRealm работать вместе? Это было бы облегчением.

вот код из 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 использует только последний найденный файл. Они отлично работают отдельно

1 Ответ

1 голос
/ 09 ноября 2011

Используйте CombinedRealm ( документ , javadoc ):

Реализация области, которая содержит одну или несколько областей.Проверка подлинности выполняется для каждой области в порядке их настройки.Если какая-либо область аутентифицирует пользователя, тогда аутентификация проходит успешно.При объединении областей имена пользователей должны быть уникальными для всех объединенных областей.

Возможно, вы уже используете LockOutRealm ( doc , javadoc ), которыйподкласс CombinedRealm и находится в конфигурации по умолчанию Tomcat.

...