如何使用tomcat为容器管理的安全性配置JDBC领域?

时间:2010-03-03 13:55:32

标签: tomcat web.xml realm

我想配置tomcat / my web应用程序以将JDBC领域用于容器管理的安全性。我在tomcat的server.xml文件中指定了这个域,如下所示:

<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如何知道他必须使用哪个领域进行身份验证? 我是否必须在元素中添加元素?但那么价​​值应该是什么呢?

提前致谢。

1 个答案:

答案 0 :(得分:5)

很好。它取决于<Realm>声明的位置,一个Tomcat会找到并用于您的webapp。它也在Tomcat's Realm Configuration HOWTO中明确提到:

  

<Realm>元素可以嵌套   在以下任何一个内部   Container元素。的位置   Realm元素有直接影响   关于该领域的“范围”(即   哪些Web应用程序将共享   相同的身份验证信息):

     
      
  • <Engine>元素内 - 此域将在所有域内共享   所有虚拟主机上的Web应用程序,   除非它被一个领域所覆盖   元素嵌套在下属中   <Host><Context>元素。

  •   
  • <Host>元素中 - 此域将在所有网站上共享   这个虚拟主机的应用程序,   除非它被一个领域所覆盖   元素嵌套在下属中   <Context>元素。

  •   
  • <Context>元素内 - 此域将仅用于此   网络应用程序。

  •   

<Engine><Host>元素通常在/conf/server.xml中声明。 <Context>元素可以根据this documentation介绍性文本底部的列表在任何位置声明。例如,如果您打算在特定于webapp的<Context>中定义此领域,而您希望将其与Web应用程序一起部署而不必烦恼服务器配置,那么最佳位置将是Webapp/META-INF/context.xml

希望这有帮助。