Как настроить область JDBC для безопасности, управляемой контейнером, с помощью tomcat?

Я хочу настроить tomcat / мое веб-приложение для использования области JDBC для безопасности, управляемой контейнером. Я указал область внутри файла server.xml tomcat следующим образом:

<Realm className="org.apache.catalina.realm.JDBCRealm" driverName="net.sourceforge.jtds.jdbc.Driver" connectionURL="jdbc:jtds:sqlserver://hostname:1433/intranet;user=sa;password=sa04jT14;instance=instanceName" userTable="users" userNameCol="username" userCredCol="password" userRoleTable="roles" roleNameCol="role" />

Я создал базу данных и таблицы. Я создал страницу входа и добавил в файл web.xml следующий код:

<login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
        <form-login-page>/login.xhtml</form-login-page>
        <form-error-page>/login.xhtml</form-error-page>
    </form-login-config>
</login-config>

Но как Tomcat узнает, какую область он должен использовать для аутентификации? Нужно ли добавлять элемент к элементу? Но какой тогда должна быть ценность?

Заранее спасибо.


person c0d3x    schedule 03.03.2010    source источник


Ответы (1)


Это нормально так. Это зависит от местоположения объявления <Realm>, которое Tomcat найдет и использует для вашего веб-приложения. Это также явно упоминается в HOWTO по настройке Tomcat Realm:

Элемент <Realm> может быть вложен в любой из следующих элементов Container. Расположение элемента Realm оказывает прямое влияние на «область» этого Realm (т. е. какие веб-приложения будут использовать одну и ту же информацию аутентификации):

  • Внутри элемента <Engine>. Эта область будет совместно использоваться ВСЕМИ веб-приложениями на ВСЕХ виртуальных хостах, ЕСЛИ ТОЛЬКО она не будет переопределена элементом области, вложенным в подчиненный элемент <Host> или <Context>.

  • Внутри элемента <Host>. Эта область будет совместно использоваться ВСЕМИ веб-приложениями для ЭТОГО виртуального хоста, ЕСЛИ ТОЛЬКО она не будет переопределена элементом области, вложенным в подчиненный элемент <Context>.

  • Внутри элемента <Context> — это Realm будет использоваться ТОЛЬКО для ЭТОГО веб-приложения.

Элементы <Engine> и <Host> обычно объявляются в /conf/server.xml. Элемент <Context> может быть объявлен в любом месте согласно списку внизу вводного текста данная документация. Если вы, например, намереваетесь определить эту область в специфичном для веб-приложения <Context>, которое вы хотели бы развернуть вместе с вашим веб-приложением без проблем с конфигурацией сервера, тогда лучшим местом будет Webapp/META-INF/context.xml.

Надеюсь это поможет.

person BalusC    schedule 03.03.2010