トップ 新規 編集 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

JSPの実際:Tomcatによる認証処理

 Tomcatのtomcat-users.xmlのユーザ情報を用いた認証

  • この方法はもっとも簡単に認証をかける方法である。
  • ただし、ウェブアプリケーションからユーザの追加、情報の修正を行う場合はこの方法は使うことはできない。

web.xmlの設定

  • <security-constrait>で認証をかける場所と認証される利用者やロールを設定する
    • <web-resource-collection>以下の<url-pattern>で認証を行う場所を設定する。"*.jsp"でjspファイルすべてや"<フォルダ名>/*"であるフォルダ以下すべてのファイルなど柔軟な設定が可能である。
  • <login-config>で認証方法を設定する
  • 以下にweb.xmlで認証に関する設定例を示す。
 <security-role>
 	<role-name>user</role-name>
 </security-role>
 <security-constraint>
   <web-resource-collection>
     <web-resource-name>restricted area</web-resource-name>
     <url-pattern>/restricted/*</url-pattern>
   </web-resource-collection>
<auth-constraint>
	<role-name>user</role-name>
</auth-constraint>
 </security-constraint>
 <login-config>
 	<auth-method>BASIC</auth-method>
   <realm-name>login please</realm-name>
 </login-config>

tomcat-users.xml

  • Tomcatへの認証情報を簡単に扱う場合、conf/tomcat-users.xmlにユーザなら<user>、ロールなら<role>を追加することで実現可能。
  • 実際のファイルは以下のようになる。
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users>
	<role rolename="user"/>
<user username="user" password="userpass" roles="user"/>
</tomcat-users>

 認証方法の設定

BASIC認証

  • web.xmlの<login-config>に以下のように設定する
 <login-config>
 	<auth-method>BASIC</auth-method>
   <realm-name>login please</realm-name>
 </login-config>
  • 以下の画像のような形で認証が要求される

ファイルが存在しません。

FORM認証

  • web.xmlの<login-config>に以下のように設定する

 <login-config>

<auth-method>FORM</auth-method>
<realm-name>login form</realm-name>

  <form-login-config>

	<form-login-page>/login/login.jsp</form-login-page>
	<form-error-page>/login/loginFailed.jsp</form-error-page>

  </form-login-config>
 </login-config>

  • 以下の画像のような形で認証が要求される

ファイルが存在しません。


 データベースを使った認証の設定

認証用テーブルの準備

ijでデータベースに接続し、テーブルを準備する。

  • テーブルの作成
create table users (name varchar(256),password varchar(256),role varchar(256));
  • ユーザの登録
insert into users values('test1','pass1','user');

JDBCレルムを使った設定

<Context〜>
	<Realm className="org.apache.catalina.realm.JDBCRealm"
     		connectionURL="jdbc:derby://localhost:1527/test;create=true"
     		driverName="org.apache.derby.jdbc.ClientDriver"
     		connectionName="test"
     		connectionPassword="test"
     		userTable="users"
     		userRoleTable="users"
     		userNameCol="name"
     		userCredCol="password"
     		roleNameCol="role"
     	/>
</Context>
  • Webアプリケーション単位で行う場合、server.xml[1]のウェブアプリケーションの<Context>内に設定する

コネクションプーリングを用いて認証用テーブルを利用して認証する設定

  • 上記に設定したデータソースを用い、name,password,roleという3列から構成されるテーブルusersを認証用に用いる場合、以下の形になる。
<Context〜>
     	<Realm className="org.apache.catalina.realm.DataSourceRealm"
     		dataSourceName="jdbc/derby"
     		localDataSource="true"
     		userTable="users"
     		userRoleTable="users"
     		userNameCol="name"
     		userCredCol="password"
     		roleNameCol="role"
     	/>
</Context>

認証用テーブルの編集を行うユーザ管理ページの例

ファイルが存在しません。JSPの実際:Tomcatによる認証処理

  • [1]eclipseではここに設定するが、本来はcontext.xmlに指定すべき?

最終更新時間:2009年01月19日 11時47分03秒