これらの構成パラメーターは、IBM® HTTP Server の System Authorization Facility (SAF) 機能を制御します。SAF ディレクティブを使用して、 IBM HTTP Server にユーザー認証を提供します。
AuthSAFAuthoritative ディレクティブは、許可が下位レベルのモジュールに受け渡されるかどうかを設定します。
ディレクティブ | 説明 |
---|---|
構文 | AuthSAFAuthoritative on | off |
デフォルト | on |
Context | ディレクトリー、.htaccess |
モジュール | mod_authnz_saf |
値 | on または off |
AuthSAFAuthoritative ディレクティブを off に設定すると、 提供されたユーザー ID と一致するユーザー ID またはルールがない場合、(modules.c ファイルで定義されたとおりに) 下位レベルのモジュールに許可が受け渡されます。指定されたユーザー ID またはルールがある場合、 通常のパスワードおよびアクセス確認が適用され、失敗すると Authentication Required 応答が返されます。
ユーザー ID が複数のモジュールのデータベースで表示される場合、 または有効な Require ディレクティブが複数のモジュールに適用される場合、 最初のモジュールがクレデンシャルを検査し、AuthSAFAuthoritative 設定に関係なく、 アクセスは渡されません。
デフォルトでは、制御は渡されず、不明なユーザー ID またはルールが不明な場合には、 Authentication Required 応答が返されます。そのため、これを設定しないでおくと、 システム保護が保たれ、NCSA に準拠した振る舞いが強制されます。
AuthSAFExpiration ディレクティブは、ブラウザーのプロンプトに表示される 値を設定します。サーバーは、AuthName ディレクティブに指定された値とこの短い句を HTTP 応答ヘッダーで送信します。するとブラウザーはそれらをパスワード・プロンプト・ウィンドウでユーザーに表示します。 短い句には、AuthName ディレクティブで指定された値と同じ文字制約があります。したがって、パスワード・プロンプト・ウィンドウに特殊文字を表示するためには、サーバーは特殊文字を EBCDIC の CharsetSourceEnc コード・ページから ASCII の CharsetDefault コード・ページに変換する必要があります。例えば、小文字の「a」をウムラウト符号付きで表示する必要があり、httpd.conf ファイルにドイツ語の EBCDIC コード・ページ「CharsetSourceEnc IBM-1141」と ASCII コード・ページ「CharsetDefault ISO08859-1」が含まれる場合、16 進数値の「43」を使用してその句をコード化する必要がありますが、これは適切な ASCII 文字に変換されます。
ディレクティブ | 説明 |
---|---|
構文 | AuthSAFExpiration short_phrase |
デフォルト | off |
Context | ディレクトリー、.htaccess |
モジュール | mod_authnz_saf |
値 | off または short_phrase |
AuthSAFExpiration ディレクティブを句に設定すると、SAF パスワードの有効期限が切れている場合に、 IBM HTTP Server はパスワードを更新するようにユーザーにプロンプトを出すことができます。ユーザーが 有効な ID および SAF パスワードを入力しても、そのパスワードの有効期限が切れている場合、 サーバーは Authentication Required 応答を戻し、 ユーザーが有効期限の切れたパスワードを更新できるように、特別なプロンプトが出されます。このプロンプトは、 レルム (AuthName ディレクティブからの値) と、その後に続く AuthSAFExpiration ディレクティブからの short_phrase 値で構成されています。
<Location /js>
AuthType basic
AuthName "zwasa051_SAF"
AuthBasicProvider saf
Require valid-user
Require saf-group SYS1 WASUSER
AuthSAFExpiration "EXPIRED! oldpw/newpw/newpw"
</Location>
ユーザーが、URL の先頭が /js であるファイルにアクセスしようとする場合、 サーバーは SAF ID およびパスワードに関してプロンプトを出します。ブラウザーには、 レルムが含まれるプロンプトが表示されます。レルムは、AuthName ディレクティブからの値 (この例では zwasa051_SAF) です。
ユーザーが有効な ID およびパスワードを入力する場合、パスワードの有効期限が切れていれば、 サーバーはこのプロンプトを繰り返しますが、ここでは値 zwasa051_SAF EXPIRED! oldpw/newpw/newpw が示されます。プロンプトにかかわらず、ユーザーは、 有効期限が切れたパスワードを入力し、その後にスラッシュ、新規パスワード、スラッシュ、 新規パスワードと再入力する必要があります。
パスワード更新が正常に行われると、サーバーは別の Authentication Required 応答、および異なる特別なプロンプトを送信します。この最後の対話は、キャッシュする必要があるパスワードをブラウザーに 認識させるために必要です。 ここでは、プロンプトはレルムおよびその後に続く プロンプト Re-enter new password で構成されています。この例では、zwasa051_SAF Re-enter new password となります。
AuthSAFExpiredRedirect ディレクティブは、z/OS® 上での認証に mod_authnz_saf を使用しているとき、パスワードの有効期限が切れた場合に要求がリダイレクトされる先の URL を指定します。
これは、AuthSAFExpiration の使用に代わる代替手段です。
ディレクティブ | 説明 |
---|---|
構文 | AuthSAFExpiredRedirect url |
デフォルト | off |
Context | ディレクトリー、.htaccess |
モジュール | mod_authnz_saf |
値 | off または url |
AuthSAFReEnter ディレクティブは、正常なパスワード変更の後、 レルムに追加される値を設定します。特殊文字のコード化については、AuthSAFExpiration ディレクティブを参照してください。
ディレクティブ | 説明 |
---|---|
構文 | AuthSAFReEnter short_phrase |
デフォルト | Re-enter new password |
Context | ディレクトリー、.htaccess |
モジュール | mod_authnz_saf |
値 | off または short_phrase |
AuthSAFReEnter ディレクティブを「Re-enter new password」 以外の句に明示的に設定すると、有効期限が切れたパスワードが正常に更新された後、 管理者は代わりのメッセージを表示することができます。AuthSAFExpiration が off に設定されている場合、このディレクティブは影響を及ぼしません。
<Location /js>
AuthType basic
AuthName "zwasa051_SAF"
AuthBasicProvider saf
Require saf-user SYSADM USER152 BABAR
AuthSAFExpiration "EXPIRED! oldpw/newpw/newpw"
AuthSAFReEnter "Enter new password one more time"
</Location>
この例では、有効期限が切れたパスワードが正常に更新された後、 サーバーは AuthSAFReEnter ディレクティブからの値とともに、別の Authentication Required 応答を 送信します。この最後の対話は、キャッシュする必要があるパスワードをブラウザーに 認識させるために必要です。 ここでは、プロンプトはレルムおよびその後に続く 特別な句で構成されています。この例では、 zwasa051_SAF Enter new password one more time となります。
SAFRunAs ディレクティブは、要求が処理される SAF ユーザー ID を設定します。
ディレクティブ | 説明 |
---|---|
構文 | SAFRunAs value |
デフォルト | off |
Context | ディレクトリー、.htaccess |
モジュール | mod_authnz_saf |
値 | off | %%CLIENT%% | %%CERTIF%% | %%CERTIF_REQ%% | %%CERTIF%% /prefix | %%CERTIF%% / ? ? | surrogate-username
/prefix | <surrogate ID> Off: サーバーは、Web サーバー・ユーザー ID で要求を 実行します。 %%CLIENT%%: サーバーは、 許可要求ヘッダーで提供される ID で要求を実行します。通常、 ユーザーはブラウザー上のポップアップ・ウィンドウで ID およびパスワードを入力し、 ブラウザーがヘッダーを作成します。URL の認証には SAF を構成する必要があります。 %%CERTIF%%: サーバーは、 SAF で SSL クライアント証明書と関連付けられた ID で要求を実行します。 SSL 証明書がない場合、または SSL 証明書が SAF で ID に関連付けられていない場合、 %%CLIENT%% がコード化されているかのように、処理が続行します。 SAF authn および authz を構成する必要はありません。 %%CERTIF_REQ%%: サーバーは、SAF で SSL クライアント証明書に 関連付けられた ID で要求を実行します。SSL 証明書がない場合、 または SSL 証明書が SAF で ID に関連付けられていない場合、 サーバーはアクセスを許可しません。SAF authn および authz を構成する必要はありません。 ![]() ![]()
![]() ![]()
![]() ![]()
<surrogate ID>: サーバーは、指定された SAF 代理 ID に関連付けられた ID で要求を実行します。 |
IBM HTTP Server は、TCP ソケットまたは UNIX ソケットのいずれかを使用して FastCGI アプリケーションと通信ができます。 ただし、FastCGI 要求に対して SAFRunAs を使用している場合は、アプリケーションとの通信には TCP ソケットを使用する必要があります。FastCGI アプリケーション用に作成された UNIX ソケットは、Web サーバーのユーザー ID のみでアクセスできます。SAFRunAs ディレクティブで制御された代替のユーザー ID は、UNIX ソケットにアクセスする権限がないため、要求は失敗します。
FastCGI を構成して TCP ソケットを使用するには、FastCGIServer ディレクティブを -port オプションで使用するか、または FastCGIExternalServer ディレクティブを使用することにより、FastCGI アプリケーションを mod_fastcgi モジュールに定義します。 FastCGIServer または FastCGIExternalServer で構成されていない動的 FastCGI サーバーは、SAFRunAS と一緒に使用することができません。
FastCGI 要求の SAFRunAs を使用可能にしない場合、TCP ソケットは必要ありません。
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authnz_saf_module modules/mod_authnz_saf.so
LoadModule authz_default_module modules/mod_authz_default.so
...
<Location /saf_protected>
AuthType basic
AuthName x1
AuthBasicProvider saf
# Code "Require valid-user" if you want any valid
# SAF user to be able to access the resource.
Require valid-user
#
# Alternately, you can provide a list of specific SAF users
# who may access the resource.
# Require saf-user USER84 USER85
#
# Alternatively, you can provide a list of specific SAF groups
# whose members may access the resource.
# Require saf-group WASGRP1 WASGRP2
</Location>
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authnz_saf_module modules/mod_authnz_saf.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_default_module modules/mod_authz_default.so
...
<Location /saf_password>
AuthType basic
AuthName "SAF auth with hfs groupfile"
AuthBasicProvider saf
AuthGroupFile /www/config/foo.grp
# Code "Require file-group" and a list of groups if you want
# a user in any of the groups in the specified group file to be able
# to access the resource.
# Note: Any authorization module, with its standard configuration, can be used here.
Require group admin1 admin2
</Location>
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authnz_saf_module modules/mod_authnz_saf.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_default_module modules/mod_authz_default.so
...
<Location /either_group>
AuthType basic
AuthName "SAF auth with SAF groups and hfs groupfile"
AuthBasicProvider saf
AuthGroupFile /www/groupfiles/foo.grp
Require saf-group WASGRP
Require saf-group ADMINS
AuthzGroupFileAuthoritative Off
AuthSAFAuthoritative Off
</Location>
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authnz_saf_module modules/mod_authnz_saf.so
LoadModule authz_default_module modules/mod_authz_default.so
...
<Location /runas_admin_bin>
AuthName "SAF RunAs client"
AuthType basic
Require valid-user
AuthBasicProvider saf
SAFRunAs %%CLIENT%%</Location>
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authnz_saf_module modules/mod_authnz_saf.so
LoadModule authz_default_module modules/mod_authz_default.so
...
<Location /custom_password_change>
AuthType basic
AuthName "Support expired PW"
Require valid-user
AuthBasicProvider saf
AuthSAFEXpiration "EXPIRED PW: oldpw/newpw/newpw"
AuthSAFReEnter "New PW again:"</Location>
ユーザーがリソースにアクセスする際にクライアント証明書を要求したい場合は、mod_ibm_ssl ディレクティブを使用します。mod_authnz_saf ディレクティブは、この構成には必要ありません。詳しくは、SSLClientAuth および SSLClientAuthRequire ディレクティブに関する資料を参照してください。
LoadModule authnz_saf_module modules/mod_authnz_saf.so
LoadModule ibm_ssl_module modules/mod_ibm_ssl.so
...
<Location /certificate_required>
SAFRunAs %%CERTIF_REQ%%
</Location>
<Location /certificate_or_basic>
AuthName "SAF RunAs certif"
AuthType basic
Require saf-user USER84 USER103
AuthBasicProvider saf
SAFRunAs %%CERTIF%%
</Location>
<Location /runas_public>
SAFRunAs PUBLIC
# This can be combined with SAF or non-SAF authentication/authorization
</Location>