3

コンテナー管理のセキュリティーに JDBC レルムを使用するように、Tomcat や Web アプリケーションを構成したいと考えています。次のように、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 はどのレルムを認証に使用する必要があるかをどのように知るのでしょうか? 要素に要素を追加する必要がありますか? しかし、その場合、値はどうあるべきでしょうか?

前もって感謝します。

4

1 に答える 1

5

それでいいです。<Realm>これは、 Tomcat が検出して Web アプリケーションに使用する宣言の場所によって異なります。Tomcat の Realm Configuration HOWTOにも明示的に記載されています。

この<Realm>要素は、次のいずれかの要素内にネストできます Container。Realm 要素の場所は、その Realm の「スコープ」 (つまり、どの Web アプリケーションが同じ認証情報を共有するか) に直接影響します。

  • <Engine>要素内<Host>- このレルムは、下位または要素内にネストされたレルム要素によってオーバーライドされない限り、すべての仮想ホスト上のすべての Web アプリケーションで共有され <Context>ます。

  • <Host>要素内- この Realm は、従属要素内にネストされた Realm 要素によってオーバーライドされない限り、この仮想ホストのすべての Web アプリケーションで共有され <Context>ます。

  • <Context>要素内- この Realm は、この Web アプリケーションにのみ使用されます。

<Engine>and<Host>要素は、通常、 で宣言されます/conf/server.xml。この要素は、このドキュメント<Context>の紹介テキストの下部にあるリストに従って、任意の場所で宣言できます。たとえば、このレルムを webapp 固有で定義し、サーバー構成に煩わされることなく webapplication と一緒にデプロイする場合、最適な場所は.<Context>Webapp/META-INF/context.xml

お役に立てれば。

于 2010-03-03T21:51:10.800 に答える