2000年7月25日星期二

Tomcat ユーザ認証

■BASIC 認証

実行環境
JDK 5.0
eclipse 3.2
Tomcat 5.5
Windows XP

J2EE Webアプリケーションでは、安全なアプリケーション設計を行うため、任意のページにセキュリティ制約条件をつけて安全性を高めることができます。
セキュリティ制約条件がつけられたページにアクセスがあった場合、パスワードによるログイン認証を行うことができます。
ログイン認証には、BASIC 認証、DIGEST 認証、FORM 認証、CLIENT-CERT 認証があります。

◆BASIC 認証 : 最も一般的な認証方式。ユーザー名とパスワードをクリアテキストでサーバーに送信する。(パスワードは Base64 エンコード)
◆DIGEST 認証 : パスワードを暗号化して送信する。
◆FORM 認証 : ログインページなどをHTML形式でカスタマイズできる。ユーザー名とパスワードをクリアテキストでサーバーに送信する。
◆CLIENT-CERT 認証 : HTTPS(HTTP over SSL)を使用した認証システム。

ここでは、BASIC 認証を用いて、「secure」フォルダ以下のファイルにセキュリティ制約条件をつけた例をレポート。コンテナは Tomcat を使用し、eclipse + tomcatPlugin を使用して作成します。

ディレクトリ構成は下記のようになります。


web.xml に security-constraint タグと login-config タグを下記のように追加記述します。


security-constraint の子要素



Tomcat 5.5\conf にある tomcat-users.xml を編集します。ここでは、新しいロール名「test」、ユーザー名「test」、パスワード「test」を下記のように定義します。パスワードは仮のものですので、適切に変更してください。


http://localhost:8080/SrvSample/secure/menu.html にアクセスしてみます。


ユーザー名とパスワードを入力して「OK」を押すと menu.html にアクセスできます。


■FORM 認証

実行環境
JDK 5.0
eclipse 3.2
Tomcat 5.5
Windows XP

FORM 認証のは BASIC 認証とよく似ています。FORM 認証では、ログインフォームをHTML形式でカスタマイズできます。また、ログインに失敗した場合に転送するエラーページもカスタマイズできます。

ここでは、ログインページを login.html、エラーページを error.html とし、前の BASIC 認証を FORM 認証に書き換えてみます。

ディレクトリ構成は下記のようになります。


BASIC 認証で記述した web.xml の login-config タグの部分を下記のように書き換えます。


login.html を記述します。送信先は「j_security_check」、ユーザー名は「j_username」、パスワードは「j_password」と設定します。これはユーザー名とパスワードが「j_security_check」という予約された場所に送られることを意味しています。変更することはできません。


Tomcat を再起動して、http://localhost:8080/SrvSample/secure/menu.html にアクセス。


■JDBCRealm にる認証

実行環境
JDK 5.0
Tomcat 5.5
MySQL 5.0
Windows XP

BASIC 認証や FORM 認証は、Tomcat のデフォルトの UserDatabaseRealm で行います。UserDatabaseRealm では、ユーザー名、パスワード、ロール名を tomcat-users.xml から読み込んで使用しますが、ユーザーが多数になると管理が困難になるでしょう。
JDBCRealm を使うとデータベースにユーザー名、パスワード、ロール名を登録して管理することができます。ユーザー数の拡大に対応しやすくなるでしょう。

☆server.xml の設定

JDBCRealm 方式を使用するには Tomcat の server.xml Engine タグ内の150行目あたりを下記のように書き換えます。ここではデータベースに MySQL を使用し、データベース名「authority」、データベースユーザー名「authority」、パスワード「authority」と設定します。


☆データベースの設定

MySQL にデータベース名「authority」、ユーザー名「authority」、パスワード「authority」を設定します。

SQL文
grant all privileges on authority.* to authority@localhost identified by 'authority';
flush privileges;
create database authority;

「users」テーブルと「user_roles」テーブルを設定します。
ユーザー名「test」、パスワード「test」、ロール名「test」を登録します。
JDBCRealm 方式に切り替えると、tomcat-users.xml にデフォルトで記述してある「tomcat」、「admin」などのユーザー名とロール名もデータベースに登録し直す必要があります。


設定はこれで完了です。

没有评论:

发表评论