3

<security-role><role-name>Admin</role-name></security-role> これは、tomcat-users.xml(レルム)を使用してコンテナーマップするためのものであると理解して います。

しかし、レルムを使用しなかった場合は混乱しますが、データベースを使用して、コンテナがデータベース内のどのフィールドがロール名用であるかを認識しているのか、データベースフィールド名に「role_name」などの命名規則があり、コンテナがそれを認識しているのか

すべてのアドバイスをありがとう

4

1 に答える 1

6

データベースレルムを使用して<Realm>、サーバー構成ファイルの要素でテーブル名と列名を構成するだけです。Tomcatの場合、これはRealmHOWTOで説明されていますJDBCRealmの章からの関連性の抜粋を次に示します。

クイックスタート

JDBCRealmを使用するようにTomcatを設定するには、次の手順に従う必要があります。

  1. まだ作成していない場合は、上記の要件に準拠するテーブルと列をデータベースに作成します。
  2. 少なくとも上記のテーブルへの読み取り専用アクセス権を持つTomcatで使用するデータベースのユーザー名とパスワードを構成します。(Tomcatがこれらのテーブルに書き込もうとすることはありません。)
  3. 使用するJDBCドライバーのコピーを $CATALINA_HOME/libディレクトリー内に配置します。JARファイルのみが認識されることに注意してください!
  4. <Realm>以下に説明するように、ファイルに要素を 設定し$CATALINA_BASE/conf/server.xmlます。
  5. Tomcat 6がすでに実行されている場合は、再起動します。

レルム要素の属性

JDBCRealmを構成するには、 上記のよう<Realm>に要素を作成してファイルにネストします。$CATALINA_BASE/conf/server.xmlJDBCRealmの属性は、レルム構成ドキュメントで定義されています。

必要なテーブルを作成するためのSQLスクリプトの例は、次のようになります(特定のデータベースに必要な構文を適応させます)。

create table users (
  user_name         varchar(15) not null primary key,  
  user_pass         varchar(15) not null
);

create table user_roles (
  user_name         varchar(15) not null,
  role_name         varchar(15) not null,
  primary key(user_name, role_name)
);

例の要素は、デフォルトのファイルRealmに含まれています(コメントアウトされています) 。$CATALINA_BASE/conf/server.xmlこれは、「authority」と呼ばれるMySQLデータベースを使用する例であり、上記のテーブルで構成され、ユーザー名「dbuser」とパスワード「dbpass」でアクセスされます。

<Realm className="org.apache.catalina.realm.JDBCRealm"
      driverName="org.gjt.mm.mysql.Driver"  
   connectionURL="jdbc:mysql://localhost/authority?user=dbuser&amp;password=dbpass"
       userTable="users" userNameCol="user_name" userCredCol="user_pass"   
   userRoleTable="user_roles" roleNameCol="role_name"/>

かなり明確ですね。Tomcatで(接続プーリング以降の)JDBCデータソースがすでに構成されている場合は、代わりにDataSourceRealmを使用することもできます。

tomcat-users.xmlあなたが話しているのは、ちなみにUserDatabaseRealmと呼ばれるものです

于 2011-03-14T03:11:24.537 に答える