2010-03-03 8 views
3

Я хочу настроить tomcat/мое веб-приложение для использования области JDBC для безопасности, управляемой контейнером. Я уточнила область внутри файла server.xml TOMCAT как это:Как настроить область JDBC для безопасности, управляемой контейнером, с помощью 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 знать, какое царство он должен использовать для аутентификации? Нужно ли добавлять элемент к элементу? Но какова должна быть тогда ценность?

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

ответ

5

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

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

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

  • Внутри <Host> элемента - Это Realm будет общим для всех веб-приложений для данного виртуального хоста, , если он не переопределен Realm элемент вложен внутри подчиненного <Context> элемента.

  • Внутри <Context> элемента - Это Realm будет использоваться только для этого веб-приложения.

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

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