[z/OS]

SAF 指引

這些配置參數可控制 IBM® HTTP Server 的「系統授權機能 (SAF)」特性。SAF 指引可用來為 IBM HTTP Server 提供使用者鑑別。

AuthSAFAuthoritative 指引

在舊版中,AuthSAFAuthoritative 指引可設定是否將授權傳遞至較低層次模組。由於此版本中的 Apache HTTP Server API 有所變更,不再需要或接受 AuthSAFAuthoritative

指引 說明
語法 AuthSAFAuthoritative on | off
預設值 on
環境定義 目錄、.htaccess
模組 mod_authnz_saf
on | off

在舊版中,AuthSAFAuthoritative 指引可設定是否將授權傳遞至較低層次模組。由於此版本中的 Apache HTTP Server API 有所變更,不再需要或接受 AuthSAFAuthoritative

如果在舊版中使用,則應該從配置中移除。

AuthSAFExpiration 指引

AuthSAFExpiration 指引可設定瀏覽器提示中顯示的值。伺服器會傳送為 AuthName 指引指定的值,以及 HTTP 回應標頭中的這個短語,然後瀏覽器會在密碼提示視窗中對使用者顯示這些內容。短語的字元限制,與為 AuthName 指引指定的值相同。因此,如果要在密碼提示視窗中顯示特殊字元,伺服器必須將特殊字元從 EBCDIC CharsetSourceEnc 字碼頁轉換成 ASCII CharsetDefault 字碼頁。例如,若您想要顯示含有變音符號的小寫 'a',而 httpd.conf 檔案包含德文 EBCDIC 字碼頁 "CharsetSourceEnc IBM-1141" 和 ASCII 字碼頁 "CharsetDefault ISO08859-1",則您必須使用十六進位值 '43' 來編寫短語,才能轉換成正確的 ASCII 字元。

指引 說明
語法 AuthSAFExpiration short_phrase
預設值 off
環境定義 目錄、.htaccess
模組 mod_authnz_saf
offshort_phrase

AuthSAFExpiration 指引設為短語,可讓 IBM HTTP Server 提示使用者在其 SAF 密碼到期時進行更新。當使用者輸入有效的 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 指引

AuthSAFExpiredRedirect 指引可指定 URL,當您使用 mod_authnz_saf 在 z/OS® 上進行鑑別時,如果您的密碼已過期,就會將要求重新導向至該 URL。

這是使用 AuthSAFExpiration 的替代方案。

指引 說明
語法 AuthSAFExpiredRedirect url
預設值 off
環境定義 目錄、.htaccess
模組 mod_authnz_saf
offurl

AuthSAFReEnter 指引

AuthSAFReEnter 指引可設定在密碼變更成功之後,附加在領域後面的值。如需編寫特殊字元的相關資訊,請參閱 BAuthSAFExpiration 指引。

指引 說明
語法 AuthSAFReEnter short_phrase
預設值 Re-enter new password
環境定義 目錄、.htaccess
模組 mod_authnz_saf
offshort_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>

在此範例中,成功更新到期的密碼之後,伺服器會傳送另一個 Authentication Required 回覆,以及 AuthSAFReEnter 指引產生的值。必須要有這個最後的互動,才能強制瀏覽器瞭解應快取哪個密碼。這次的提示會包含領域,後面接特殊的短語。在此範例中,就是 zwasa051_SAF Enter new password one more time

SAFAPPLID 指引

將傳遞至配置下之作業系統 pthread_security_applid_np() 子常式的應用程式 ID (APPLID) 參數,置換成 "SAFRunAs"。

指引 說明
語法 SAFAPPLID application-id
預設值 None(某些作業系統配置會隱含地將其視為 "OMVSAPPL")
環境定義 目錄、.htaccess
模組 mod_authnz_saf
application-id

使用 SAFRunAs 指引時,在 "APPL" 類別為作用中的某些安全產品配置之下,安全產品會驗證所鑑別的使用者可存取 "OMVSAPPL" 類別。如果是配置 SAFAPPLID,則會改用指定的應用程式 ID。

SAFRunAs 指引

SAFRunAs 指引可設定要用來處理要求的 SAF 使用者 ID。

指引 說明
語法 SAFRunAs value
預設值 off
環境定義 目錄、.htaccess
模組 mod_authnz_saf
off | %%CLIENT%% | %%CERTIF%% | %%CERTIF_REQ%% | %%CERTIF%% /prefix | surrogate-username /prefix | <surrogate ID>
  • Off:伺服器將會以 Web 伺服器使用者 ID 來執行要求。
  • %%CLIENT%%:伺服器將會以「授權」要求標頭中提供的 ID 來執行要求。通常使用者會在瀏覽器的蹦現視窗中提供 ID 和密碼,而瀏覽器會建立標頭。這需要配置 SAF,以鑑別 URL。
  • %%CERTIF%%:伺服器將會以 SAF 中與 SSL 用戶端憑證相關聯的 ID 來執行要求。如果沒有 SSL 憑證,或是 SSL 憑證未與 SAF 中的 ID 相關聯,處理程序會當作已編寫 %%CLIENT%% 一樣,繼續進行。這不需要配置 SAF authnauthz

    surrogate-user:伺服器會將執行緒身分變更為特定的代理使用者。伺服器對 BPX.SRV.surrogate-user 設定檔必須具備讀取權。當使用這個選項時,Web 伺服器的代理和原始 ID 都必須能夠存取所要求的檔案系統物件。這是此 SAFRunAs 方法特有的限制,也是 z/OS 安全模型的一項功能。伺服器將會以與指定 SAF 代理 ID 相關聯的 ID 來執行要求。

  • %%CERTIF_REQ%%:伺服器將會以 SAF 中與 SSL 用戶端憑證相關聯的 ID 來執行要求。如果沒有 SSL 憑證,或是 SSL 憑證未與 SAF 中的 ID 相關聯,則伺服器將不容許存取。這不需要配置 SAF authnauthz

    <surrogate-user>:伺服器會將執行緒身分變更為特定的代理使用者。伺服器必須具有 BPX.SRV."surrogate-user" 的存取權。當使用這個選項時,代理和 Web 伺服器的原始 ID 都必須能夠存取所要求的檔案系統物件。這是此 SAFRunAs 方法特有的限制,也是 z/OS 安全模型的功能。

    <surrogate-user>:伺服器將會以與所指定之 SAF 代理 ID 相關聯的 ID 來執行要求。

  • %%CERTIF%% /prefix:伺服器會針對 /prefix 之下的 URL,將執行緒身分變更為 SSL 用戶端鑑別提供的身分。
    避免困難 避免困難:
    • 此語法只在廣域和 <virtualHost> 環境定義中有效。
    • 如果 SAFRunAs 也是使用 <Location> 或 <Directory> 環境定義中的單一引數版本來配置,則伺服器不會在要求期間切換兩次身分。
    • 此特性可與 "AuthBasicProvider saf" 一起使用。
    gotcha
  • surrogate-username /prefix:伺服器會針對 /prefix 之下的 URL,將執行緒身分變更為特定的代理使用者 ID。

    當使用這個選項時,代理和 Web 伺服器的原始 ID 都必須能夠存取所要求的檔案系統物件。這是此 SAFRunAs 方法特有的限制,也是 z/OS 安全模型的功能。

    避免困難 避免困難:
    • 此語法只在廣域和 <virtualHost> 環境定義中有效。
    • 如果 SAFRunAs 也是使用 <Location> 或 <Directory> 環境定義中的單一引數版本來配置,則伺服器不會在要求期間切換兩次身分。
    • 此特性可與 "AuthBasicProvider saf" 一起使用。
    gotcha
  • <surrogate ID>:伺服器將會以與所指定之 SAF 代理 ID 相關聯的 ID 來執行要求。

IBM HTTP Server 可以使用 TCP Socket 或 UNIX Socket 來與 FastCGI 應用程式通訊。不過,使用 SAFRunAs 來處理 FastCGI 要求時,您必須使用 TCP Socket 來與應用程式通訊。只有 Web 伺服器使用者 ID 可以存取為 FastCGI 應用程式建立的 UNIX Socket。以 SAFRunAs 指引來控制的替代使用者 ID 沒有存取 UNIX Socket 的權限,因此要求會失敗。

如果要配置 FastCGI 來使用 TCP Socket,請使用 FastCGIServer 指引搭配 -port 選項,或使用 FastCGIExternalServer 指引,將 FastCGI 應用程式定義至 mod_fastcgi 模組。未以 FastCGIServerFastCGIExternalServer 來配置的動態 FastCGI 伺服器,不能用於 SAFRunAs

如果沒有啟用 SAFRunAs 來處理 FastCGI 要求,則不需要 TCP Socket。

避免困難 避免困難: 您可以針對使用 Action 指引處理的資源,配置 SAFRunAS 指引。當您這麼做時,您必須在涵蓋 Action 指引第二個參數的範圍內(而不是在原始資源路徑的範圍內)配置 SAFRunAS 指引。
例如,SAFRunAs 指引通常用於 Location 指引中:
<Location /context-root-A/>
   SAFRunAS %%CLIENT%%
 </Location>
含有 /context-root-A/* 參數的路徑要求會以遠端使用者身份執行。
不過,當您使用 Action 指引時,為了相符,伺服器也會置換它所用的環境定義根目錄:
# Process *.phtml with the "php-script" handler.
AddHandler php-script .phtml

# Define the "php-script" handler as an existing CGI.
Action php-script /cgi-bin/php-cgi
Action 指引會將 /context-root-A/hello.phtml 檔的要求,轉換成含有 /cgi-bin/php-cgi 參數的路徑要求,且該參數具有指令行引數 /context-root-A/hello.phtml
當您包含 Action 指引時,也會在 Location 指引中包含 SAFRunAs 指引,類似下列範例所示:
<Location /cgi-bin/php-cgi>
   SAFRunAS %%CLIENT%%
 </Location>

如果您需要多項 SAFRunAS 設定,請放棄整個 Action 指引,或建立多個含有不同的第二個參數的 Action 指引。

gotcha

SAFRunAsEarly 指引

SAFRunAsEarly 指引容許在存取任何目錄之前執行 SAFRunAs

指引 說明
語法 SAFRunAsEarly on | off
預設值 off
環境定義 位置
模組 mod_authnz_saf
on | off
當收到的要求將 SAFRunAs 設為 %%CLIENT%% 時,IHS 會在切換使用者 ID 之前嘗試存取要在回應中提供的檔案。 當目錄/檔案無法由用於執行 IHS 的使用者存取,但可供 %%CLIENT%% 使用者存取時,這會造成問題。試圖存取這種目錄時會發生如下的錯誤:
[Tue Aug 11 14:03:16 2015] [error] [client x.x.x.x] (111)EDC5111I Permission denied. (errno2=0x5B4B0002): 
access to /saf/privileged/index.html deniedIf SAFRunAsEarly is set to on with SAFRunAs set to %%CLIENT%%, IHS will switch
user before any directory/file access are attempted.

如果 SAFRunAsEarly 設為 on 且 SAFRunAs 設為 %%CLIENT%%,IHS 會在試圖存取任何目錄/檔案之前切換使用者。

註:

SAFRunAsEarly 必須在 <Location> 環境定義或廣域環境定義中使用。 無法在 <Directory> 環境定義中使用。

如果您想要使用 SAF 來進行鑑別及授權,請考慮下列範例。這是 SAF 使用者和群組最常見的實務範例,且符合 Web 存取的需求。
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>
如果您想要使用 SAF 檔案來進行鑑別,但要使用非 SAF 群組檔案來進行授權,請考慮下列範例。在此範例中,會使用 SAF 來鑑別使用者,但使用不同的機制來授權使用者。
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>
如果您想要容許存取以 SAF 或群組檔案來授權的使用者,請考慮下列範例。
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
</Location>
如果您想要要求使用與已鑑別之使用者名稱相關聯的 SAF 專用權來執行要求,請考慮下列範例。
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>
如果您想要支援變更過期的 SAF 密碼,請考慮下列範例。
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>
如果您想要要求使用與用戶端憑證相關聯的 SAF 專用權來執行要求,但是當用戶端憑證未對映至 SAF 使用者時,需要使用者名稱和密碼鑑別,請考慮下列範例。如果使用者提供 SAF 可以對映至使用者 ID 的憑證,則使用者 ID 也必須傳遞任何 Require 指引。
<Location /certificate_or_basic>
AuthName "SAF RunAs certif"
AuthType basic
Require saf-user USER84 USER103
AuthBasicProvider saf
SAFRunAs %%CERTIF%%
</Location>
如果您想要要求使用與代理 ID 相關聯的 SAF 專用權來執行要求,請考慮下列範例。
<Location /runas_public>
SAFRunAs PUBLIC
# This can be combined with SAF or non-SAF authentication/authorization
</Location>

指出主題類型的圖示 參照主題



時間戳記圖示 前次更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=ihs-dist&topic=rihs_safdirs
檔名:rihs_safdirs.html