- 10.1. J2EEのアクセス制限機能
- 10.2. <security-role>
- 10.3. <security-constraint>
- 10.4. <login-config>
- 10.5. Tomcatでの設定
10.5. Tomcatでの設定
ユーザ及びロールをTomcatで管理する方法には3種類あります。ここでは最も簡単な「MemoryRealm」を用いた方法について説明します。
MemoryRealmは設定ファイルによって、ユーザおよびロールを管理する方法です。Tomcatはデフォルトで、Tomcatのconfディレクトリにある「tomcat-users.xml」でユーザおよびロールを管理しています。この設定ファイルの内容は、Tomcat内にある全Webアプリケーションに影響しています。これをこのまま使用しても構わないのですが、ここでは任意のWebアプリケーションに対して、独自の設定ファイルを指定する方法について説明します。
任意のWebアプリケーションに対してMemoryRealmを設定するには、server.xmlを編集します。以下のように、該当する<Context>の内側に<Realm>タグを記述します。
<Context ...> ... <Realm className="org.apache.catalina.realm.MemoryRealm" debug="1" pathname="/home/tomcat/sample/WEB-INF/users.xml" /> ... </Context>
<Realm>タグの「className」属性は例のように「org.apache.catalina.realm.MemoryRealm」としてください。他の管理方法を使用する場合には、別のクラス名を指定します。「debug」属性はデバッグレベルを指定するものです。0から4の値を指定し、高いほど、ログを細かく出力します。
最後に「pathname」属性です。この属性で、設定ファイルのパスを指定します。絶対パスか相対パスで指定します。相対パスで指定した場合には、Tomcatのホームディレクトリからのパスとみなされます。
続いて設定ファイルの内容を説明します。設定したいアプリケーションの/WEB-INF/以下に、users.xmlを作成します。内容は以下のように記述します。全体を<tomcat-users>タグで囲み、その中に<role>タグでロールを、<user>タグでユーザを定義します。
<?xml version="1.0" ?> <tomcat-users> <role rolename="admin"/> <role rolename="support"/> <user username="tomcat" password="tomcat" roles="admin,support"/> <user username="techscore" password="techscore" roles="admin"/> </tomcat-users>
<role>タグの「rolename」属性はロール名を指定するものです。当然、このロール名はweb.xmlに定義したものに対応するものです。複数のロールを定義する場合には、その数だけ<role>タグを繰り返してください。
<user>タグの「username」はユーザ名を、「password」はパスワードを、「roles」はユーザが所属しているロールを指定するものです。例のようにパスワードも平文で指定します。もしユーザが複数のロールに属している場合には、「,」で区切って指定します。複数のユーザを定義する場合にも、その数だけ<user>タグを繰り返します。
ここまでの設定が正しできていれば、web.xmlに設定したWebリソースにアクセスする際、BASIC認証が要求されます。また正しいユーザ名とパスワードを入力すれば、指定したWebリソースにアクセスできます。
(実習課題4)
実習課題3のWebアプリケーションにMemoryRealmを設定し、web.xmlに設定したアクセス制限が正しく動作していることを確認しなさい。