Hitachi Web Server
(1) LDAPサーバでユーザ認証するための準備
LDAPサーバを利用した認証例を説明します。
この機能を利用するためには,httpsd.confに次のディレクティブを設定してLDAP関連機能を処理するモジュールを組み込んでください。次の1,2の順に,二つのモジュールを順番に組み込んでください。
組み込みを指定した行以降に,LDAPを利用したユーザ認証のディレクティブが設定できます。
(a) コンフィグファイルhttpsd.conf上での組み込み方法
- ライブラリの組み込み
- Linux版
LoadFile libexec/libldapssl41.so
このライブラリはWebサーバをインストールしたときに標準で格納されています。
- Solaris版
LoadFile libexec/libldapssl41.so
このライブラリはWebサーバをインストールしたときに標準で格納されています。
- AIX版
ファイルセット ldap.client.rte をインストールした後,次の設定をしてください。
LoadFile /usr/lib/libldap.a (AIX 5L V5.2以前の場合)
LoadFile /usr/lib/libibmldap.a (AIX 5L V5.3の場合)
- HP-UX版
Hitachi Directory Runtime Version 2をインストールした後,次の設定をしてください。
HP-UX11.0の場合
LoadFile /opt/hitachi/DirectoryRuntime/hds_client/lib/libldap30_11.sl
- Windows版
LoadFile libldap/nsldap32v50.dll
このライブラリはWebサーバをインストールしたときに標準で格納されています。
- LDAP認証モジュールの組み込み
- UNIX版
LoadModule hws_ldap libexec/mod_hws_ldap.so
- Windows版
LoadModule hws_ldap modules/mod_hws_ldap.so
(2) LDAPサーバでの認証方法
ユーザ認証する場合,<Directory>,.htaccessにはパスワードファイルを使用した場合と同様に,AuthTypeディレクティブとAuthNameディレクティブを指定します。また,Require valid-userとLDAPRequireディレクティブを指定することで,LDAPサーバと連携したユーザ認証ができます。
C:/Program Files/Hitachi/httpsd/cgi-bin/のCGIを使用する場合に,ユーザIDとパスワードを入力させて認証する例を次に示します。
- (例)
LDAPServerName ldap.server.hitachi.com
LDAPServerPort 389
<Directory "C:/Program Files/Hitachi/httpsd/cgi-bin">
AuthName LDAP-TASK
AuthType Basic
Require valid-user
LDAPRequire
</Directory>
LDAPサーバ内の属性でアクセス制御もできます。
例えば,社員登録番号が100番から200番のユーザだけアクセスを許可することもできます。詳細についてはLDAPRequireディレクティブを参照してください。
(3) LDAPサーバでのアクセス制御
認証されたユーザが,該当コンテンツを利用できるかどうかを定義できます。
LDAPRequire 〔%DN属性%〕 〔LDAP検索フィルタ〕
|
LDAP検索フィルタに,LDAPサーバに登録されている情報を基に,アクセス権限について定義します。
例えば,認証されたユーザの中でtaroとhanakoだけをアクセスさせたい場合には,次のように定義します。定義した情報は,あらかじめLDAPサーバ内に登録してください。
(例)
LDAPRequire %cn% (|(cn=taro)(cn=hanako))
|
(4) ユーザ認証とアクセス制御の関係
LDAPサーバにユーザ名がcnとして登録されている場合を例に説明します。SSLクライアント認証とLDAPRequireディレクティブを組み合わせた場合,証明書による認証後,LDAPサーバにクライアントが登録されているかどうかを確認します。このとき,クライアント証明書内のサブジェクトのCommon Name(CN)をユーザ名として扱い,パスワードを使用しない匿名アクセスとしてLDAPサーバにアクセスし確認します。LDAPサーバにアクセスできなかった場合は,ステータスコード500 Internal Server Errorを応答します。
ユーザ認証とアクセス制御の関係を次の図に基づいて説明します。
図4-5 ユーザ認証とアクセス制御の関係
(a) LDAPサーバによる認証
- LDAPサーバでの認証をするためには,各ユーザが登録されているDN(認証するユーザが登録されているエントリ:ou=member,o=hitachi,c=jpなど)を,あらかじめLDAPBaseDNディレクティブに定義しておきます。
- LDAPRequireディレクティブが定義されたコンテンツをアクセスする場合,クライアントをこのDN内の情報を使って認証します。Webブラウザ上にユーザ名とパスワードの入力を要求する画面が表示されます。
- ユーザ名,パスワードを入力すると,cn=ユーザ名とLDAPBaseDNディレクティブに定義したDNを組み合わせて,認証するユーザのDNを作成して,パスワード認証します。この場合,ユーザのDNはcn=TARO,ou=member,o=hitachi,c=jpになります。
- LDAPサーバのDNに登録されたパスワードと,クライアントが入力したパスワードが一致しなければ,このユーザに対してステータスコード401 Authorization Requiredを応答し,アクセスを拒否します。
- パスワードが一致してもLDAPRequireディレクティブにLDAP検索フィルタの指定がある場合は,検索フィルタの記述とユーザのDNが一致するかどうかを判断します。
- 一致していればアクセスを許可します。cn=JIROはパスワードが一致していても,検索フィルタの記述には一致しないため,LDAPNoEntryStatusディレクティブに従ったステータスコード(デフォルトでは401 Authorization Required)を応答し,アクセスを拒否します。
(b) SSLクライアント証明書がある場合
- クライアント(Webブラウザ)からアクセスするときに,SSLクライアント証明書を受け付けた場合には,LDAPサーバでは認証しません。SSLで認証します。
- LDAPRequireディレクティブを定義した場合には,LDAPサーバをアクセスして,アクセス制御します。
クライアント証明書のサブジェクトのCommon Name(CN)を,クライアントの名前としてLDAPサーバを検索します。CNがLDAPサーバにない場合,ステータスコード401 Authorization Requiredを応答します。
- クライアント証明書のCNがLDAPサーバにある場合,検索フィルタを使って,このフィルタに一致するかどうか確認します。検索フィルタが(|(cn=TARO)(cn=HANAKO))の場合,証明書のCNがTAROであれば検索フィルタに一致するのでアクセスできます。また,CNがJIROの場合は,検索フィルタに一致しないため,LDAPNoEntryStatusディレクティブに従ったステータスコード(デフォルトでは401 Authorization Required)を応答し,アクセスを拒否します。
LDAPサーバには必ずユーザを区別するためのcnがあり,これと証明書のCNが一致していると仮定して動作するため,この規則を基にSSLクライアント証明書を作成してください。
(5) 複数のLDAPサーバでユーザ認証
LDAPサーバは並列に複数指定できます。そのため,異なるユーザが登録されているLDAPサーバを併用してユーザ認証ができます。また,ディレクトリ単位にも指定できるため,コンテンツごとにLDAPサーバを変更できます。
(a) LDAPサーバの複数指定
LDAPServerName,LDAPServerPort,及びLDAPBaseDNディレクティブに複数のLDAPサーバに対応したサーバ名,ポート番号,及びDNを指定できます。最初に指定したLDAPサーバの優先度が最も高く,指定した順に優先度は低くなります。
(b) ディレクトリ単位にLDAPサーバを指定
次に示すLDAP関連のディレクティブはディレクトリ単位に指定できます。指定したディレクティブはhttpsd.conf,<VirtualHost>,<Directory>の順に上位ディレクトリから下位ディレクトリへ継承します。
- ディレクトリ単位に指定できるLDAP関連ディレクティブ
- LDAPServerName
- LDAPServerPort
- LDAPTimeout
- LDAPBaseDN
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.