サーブレットからのLDAPアクセス
セキュリティ機能の組み込み方法
Webアプリケーションでセキュリティ機能を有効にするために、以下の設定が必要です。
1 ユーザ認証の設定
Webアプリケーションでユーザ認証を行うには、Webアプリケーション環境定義ファイル(deployment descriptor)の“ユーザ認証の定義(login-configタグ)”を設定します。
|
タグ名 |
説明 |
タグの
省略 |
複数の
指定 |
|
auth-method |
認証方法を定義します。以下の値を指定します。
- BASIC
HTTP Basic認証
- FORM
フォームベース認証
auth-methodタグまたは認証方法が省略された場合は、"BASIC"が省略値となります。 |
○
(可) |
×
(不可)
|
|
realm-name |
HTTP Basic認証で使用する領域名を定義します。
領域名は、ユーザ認証を行う画面(ダイアログボックス)に表示されます。
HTTP Basic認証を使用しない場合、指定は無視されます。 |
○
(可)
|
×
(不可)
|
|
form-login-config |
フォームベース認証定義の開始/終了を定義します。
フォームベース認証で使用するログインページやエラーページを指定します。
フォームベース認証を使用しない場合、指定は無視されます。 |
○
(可)
|
×
(不可)
|
|
form-login-page |
フォームベース認証で使用するログインページを定義します。
form-login-configタグ定義時は、必須です。
指定されたログインぺージは、フォームベース認証が行われる際にWebブラウザに表示されます。
(注意)
ログインページでは、ユーザ名/パスワードをServletコンテナに受け渡すため、以下のインタフェースを使用しなければなりません。
- アプリケーション名:j_security_check
- パラメタ名->ユーザ名:j_username
- パラメタ名->パスワード:j_password
<例>
:
<FORM ACTION="j_security_check" METHOD="POST">
UserName: <INPUT TYPE="text" NAME="j_username">
Password: <INPUT TYPE="password" NAME="j_password">
</FORM>
:
auth-methodタグでフォームベース認証を指定した場合は、必ず本タグを指定してください。ログインページは必ず指定してください。省略された場合は、ログインページが表示されません。 |
×
(不可)
|
×
(不可)
|
|
form-error-page |
フォームベース認証失敗時に表示するエラーページのロケーションを定義します。
form-login-configタグ定義時は、必須です。
指定されたエラーぺージは、フォームベース認証失敗時にWebブラウザに表示されます。
フォームログイン失敗時に表示するエラーページのロケーションを指定します。 |
×
(不可)
|
×
(不可)
|
2 アクセス制限の設定
Webアプリケーションでアクセス制限を行うには、Webアプリケーション環境定義ファイル(deployment descriptor)の以下のタグを設定します。
- “アクセス制限の定義(security-constraintタグ)”
- “セキュリティロールの定義(security-roleタグ)”
- “セキュリティロールの参照の定義(security-role-refタグ)”
■アクセス制限の定義
(security-constraintタグ)
|
タグ名 |
説明 |
タグの
省略 |
複数の
指定 |
|
web-resource-collection |
Webリソースコレクションを定義します。 |
×
(不可)
|
○
(可)
|
|
web-resource-name |
webリソースのコレクション名を定義します。
web-resource-collectionタグの定義時は、必須です。 |
×
(不可)
|
×
(不可)
|
|
url-pattern |
URLパターンを定義します。
Webアプリケーションのルートディレクトリからの対象パスで定義します。このとき、先頭に"/"を追加します。
url-patternタグまたは、URLパターンを省略した場合は、本タグを含む<security-constraint>タグで指定されたアクセス制限が無効になります。 |
○
(可)
|
○
(可)
|
|
http-method |
HTTPのメソッド(GET、POSTなど)を定義します。
定義したメソッドに対してだけアクセスが制限されます。
省略した場合は、全メソッドがアクセス制限の対象となります。 |
○
(可)
|
○
(可)
|
|
auth-constraint |
Webリソースコレクションにアクセス可能なセキュリティロールを定義します。
指定したロールを持つユーザだけ、リソースコレクションにアクセス可能となります。
省略した場合は、すべてのユーザがアクセス可能となります。 |
○
(可)
|
×
(不可)
|
|
role-name |
セキュリティロール名を定義します。
セキュリティロール名が指定された場合、ユーザの識別が必要となるため、ユーザ認証が行われます。
ここで指定されるロールは、
<servlet>タグの<security-role-ref>の<role-link>に定義されていなければなりません。
role-nameタグを省略した場合は、すべてのユーザがアクセス可能となります。ロール名は必ず指定してください。
ロール名を省略した場合は、どのユーザもアクセスできません。 |
○
(可)
|
○
(可) |
|
user-data-constraint |
データ保護属性を定義します。クライアント−コンテナ間で通信するデータをどう保護すべきであるかを定義します。 |
○
(可)
|
×
(不可)
|
|
transport-guarantee |
クライアント−サーバ間の転送方法を定義します。
user-data-constraintタグの定義時は、必須です。
以下の値を指定します。
- NONE
アプリケーションが、転送保証を必要としないことを意味します。
- INTEGRAL
クライアント−サーバ間で送信されるデータの転送保証を必要とすることを意味します。
- CONFIDENTIAL
データの盗聴の防止が必要であることを意味します。
INTEGRALまたはCONFIDENTIALを指定された場合は、SSLによる通信であることを保証します。 |
×
(不可)
|
×
(不可)
|
■セキュリティロールの定義 (security-roleタグ)
|
タグ名 |
説明 |
タグの
省略 |
複数の
指定 |
|
role-name |
セキュリティロール名を定義します。
ロール名には、セキュリティ機能の運用設定(Smart RepositoryまたはInfoDirectory)で定義したセキュリティロール名を指定してください。 |
×
(不可)
|
×
(不可)
|
■セキュリティロールの参照の定義
|
タグ名 |
説明 |
タグの
省略 |
複数の
指定 |
|
security-role-ref |
サーブレットコードで使用するセキュリティロールの参照を定義します。 |
○
(可)
|
○
(可)
|
|
role-name |
サーブレットコードで使用されるセキュリティロール名を指定します。
security-role-refタグを定義する場合は必須です。
javax.servlet.http.HttpServletRequest.isUserInRole()メソッドのパラメタとして利用することができます。 |
×
(不可)
|
×
(不可)
|
|
role-link |
<security-role>で指定されたセキュリティロール名を定義します。
security-role-refタグを定義する場合は必須です。 |
×
(不可) |
×
(不可)
|
■設定例
Webアプリケーション環境定義ファイル(deployment descriptor)の設定例を次に示します。
定義例
以下にセキュリティを利用するためのweb.xmlのタグ設定の一例を示します。
<servlet>
・
・
<security-role-ref>
<role-name>
ADM
</role-name>
<role-link>
Administrator -->(注1)
</role-link>
</security-role-ref>
・
・
</servlet>
・
・
<security-constraint>
<web-resource-collection>
<web-resource-name>
Shop
</web-resource-name>
<url-pattern>
/Shop/* -->(注2)
</url-pattern>
<http-method>
POST -->(注3)
</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>
Administrator -->(注4)
</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>
CONFIDENTIAL -->(注5)
</transport-guarantee>
</user-data-constraint>
</security-constraint>
・
・
<login-config>
<auth-method>
BASIC -->(注6)
</auth-method>
<realm-name>
name
</realm-name>
</login-config>
・
・
<security-role>
<role-name>
Administrator -->(注7)
</role-name>
</security-role>
・
・ |
上記例は、(注2)に示されるリソースに対し、(注3)に示される方法でアクセスした場合の設定です。
ユーザ認証は、(注6)で示されるようにHTTP Basic認証が行われます。
セキュリティロールは、(注4)に示されるようにAdministratorが許可しています。
(注4)の値は、(注1)で定義します。
(注1)の値は、(注7)で定義します。
(注7)の値は、セキュリティロールとして使用するディレクトリサービスのtitle属性として設定した値を指定してください。
転送方法は、(注5)に示されるように「データの盗聴防止を必要とする」ため、SSLによる通信の場合を許可しています。
フォームベース認証の場合は、以下の定義になります。
<login-config>
<auth-method>
FORM
</auth-method>
<form-login-config>
<form-login-page>
/login.jsp
</form-login-page>
<form-error-page>
/error.jsp
</form-error-page>
</form-login-config>
</login-config> |