[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 伪指令设置浏览器提示中显示的值。服务器在 HTTP 响应头中发送为 AuthName 伪指令指定的值以及此短语,然后浏览器在密码提示窗口中向用户显示这些内容。此短语与为 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
off 或者 short_phrase

AuthSAFExpiration 伪指令设置为短语可以允许 IBM HTTP Server 在用户的 SAF 密码过期时提示用户更新该密码。如果用户输入有效标识和 SAF 密码,但该密码已过期,那么服务器将返回需要认证应答并显示特别提示,以允许用户更新过期密码。该提示包含领域(来自 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 标识和密码。浏览器将显示一个包含该领域的提示。领域是来自 AuthName 伪指令的值,在本示例中为 zwasa051_SAF

如果用户提供了有效的标识和密码,但该密码已过期,那么服务器将以值 zwasa051_SAF EXPIRED! oldpw/newpw/newpw 重复显示提示。不管提示是什么,用户都必须重新输入已过期的密码,后加斜杠,并输入新密码,后加另一斜杠,然后再次输入新密码。

如果密码成功更新,那么服务器将发送另一需要认证应答,并显示完全不同的特别提示。为了强制浏览器理解应该对哪个密码进行高速缓存,最后这个交互操作是必需的。此次的提示将包含领域,后加提示 Re-enter new password。在本示例中,它将是 zwasa051_SAF Re-enter new password

AuthSAFExpiredRedirect 伪指令

AuthSAFExpiredRedirect 伪指令指定您在 z/OS® 上使用 mod_authnz_saf 进行认证并且密码已到期时,应该将请求重定向到的 URL。

这是使用 AuthSAFExpiration 的替代方法。

伪指令 描述
语法 AuthSAFExpiredRedirect url
缺省值 off
上下文 目录和 .htaccess
模块 mod_authnz_saf
offurl

AuthSAFReEnter 伪指令

AuthSAFReEnter 伪指令设置在成功更改密码之后向领域追加的值。有关编码特殊字符的信息,请参阅 BAuthSAFExpiration 伪指令。

伪指令 描述
语法 AuthSAFReEnter short_phrase
缺省值 Re-enter new password
上下文 目录和 .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 伪指令的值。为了强制浏览器理解应该对哪个密码进行高速缓存,最后这个交互操作是必需的。此次的提示将包含领域,后加一个特殊短语。在本示例中,它将是 zwasa051_SAF Enter new password one more time

SAFAPPLID 伪指令

在使用了“SAFRunAs”的配置中,此伪指令覆盖传递到操作系统 pthread_security_applid_np() 子例程的应用程序标识 (APPLID) 参数。

伪指令 描述
语法 SAFAPPLID application-id
缺省值 (某些操作系统配置会隐式地将其视为“OMVSAPPL”)
上下文 目录和 .htaccess
模块 mod_authnz_saf
application-id

如果使用了 SAFRunAs 伪指令,那么在“APPL”类处于活动状态的某些安全性产品配置下,安全性产品将验证已认证的用户是否有权访问“OMVSAPPL”类。如果配置了 SAFAPPLID,那么将改为使用指定的应用程序标识。

SAFRunAs 伪指令

SAFRunAs 伪指令可以设置将用来处理请求的 SAF 用户标识。

伪指令 描述
语法 SAFRunAs value
缺省值 off
上下文 目录和 .htaccess
模块 mod_authnz_saf
off | %%CLIENT%% | %%CERTIF%% | %%CERTIF_REQ%% | %%CERTIF%% /prefix | surrogate-username /prefix | <surrogate ID>
  • Off:服务器将以 Web 服务器用户标识运行请求。
  • %%CLIENT%%:服务器将以授权请求头中提供的标识来运行请求。通常,用户在浏览器上的弹出窗口中提供标识和密码,并且浏览器将创建头。要求将 SAF 配置为认证 URL。
  • %%CERTIF%%:服务器将以 SAF 中与 SSL 客户机证书相关联的标识来运行请求。如果没有 SSL 证书或者该 SSL 证书尚未与 SAF 中的标识相关联,那么将按照 %%CLIENT%% 已被编码时的处理方式继续处理。不需要配置 SAF authnauthz

    surrogate-user:服务器将线程身份更改为特定的替代用户。服务器必须对 BPX.SRV.surrogate-user 概要文件具有读访问权。使用此选项时,Web 服务器的替代标识和原始标识都必须对所请求的文件系统对象具有访问权。此限制是此 SAFRunAs 方法所独有的,它是 z/OS 安全模型的一项功能。服务器将以与所指定的 SAF 替代标识相关联的标识运行请求。

  • %%CERTIF_REQ%%:服务器将以 SAF 中与 SSL 客户机证书相关联的标识来运行请求。如果没有 SSL 证书或者该 SSL 证书尚未与 SAF 中的标识相关联,那么服务器将不允许访问。不需要配置 SAF authnauthz

    <surrogate-user>:服务器将线程身份更改为特定的替代用户。服务器必须对 BPX.SRV."surrogate-user" 具有读访问权。使用此选项时,替代标识和 Web 服务器的原始标识都必须对所请求的文件系统对象具有访问权。此限制是此 SAFRunAs 方法所独有的,它是 z/OS 安全模型的一项功能。

    <surrogate-user>:服务器将以与指定的 SAF 替代标识相关联的标识运行请求。

  • %%CERTIF%% /prefix:服务器将线程身份更改为 SSL 客户机认证针对 /prefix 下的 URL 提供的身份。
    避免故障 避免故障:
    • 此语法仅在全局上下文和 <virtualHost> 上下文中有效。
    • 如果还使用了 <Location> 或 <Directory> 上下文中的单自变量版本来配置 SAFRunAs,那么服务器将不会在请求期间切换身份两次。
    • 此功能可以与“AuthBasicProvider saf”配合使用。
    gotcha
  • surrogate-username /prefix:服务器将线程身份更改为 /prefix 下的 URL 的特定替代用户标识。

    使用此选项时,替代标识和 Web 服务器的原始标识都必须对所请求的文件系统对象具有访问权。此限制是此 SAFRunAs 方法所独有的,它是 z/OS 安全模型的一项功能。

    避免故障 避免故障:
    • 此语法仅在全局上下文和 <virtualHost> 上下文中有效。
    • 如果还使用了 <Location> 或 <Directory> 上下文中的单自变量版本来配置 SAFRunAs,那么服务器将不会在请求期间切换身份两次。
    • 此功能可以与“AuthBasicProvider saf”配合使用。
    gotcha
  • <surrogate ID>:服务器将以与指定的 SAF 替代标识相关联的标识运行请求。

IBM HTTP Server 可以使用 TCP 套接字或 UNIX 套接字与 FastCGI 应用程序通信。但是,将 SAFRunAs 用于 FastCGI 请求时,必须将 TCP 套接字用于与应用程序的通信。为 FastCGI 应用程序创建的 UNIX 套接字仅可通过 Web 服务器用户标识访问。使用 SAFRunAs 伪指令控制的备用用户标识不具有访问 UNIX 套接字的许可权,因此请求将失败。

要将 FastCGI 配置为使用 TCP 套接字,请使用带有 -port 选项的 FastCGIServer 伪指令或使用 FastCGIExternalServer 伪指令来对 mod_fastcgi 模块定义 FastCGI 应用程序。未配置 FastCGIServerFastCGIExternalServer 的动态 FastCGI 服务器不能与 SAFRunAs 配合使用。

如果没有为 FastCGI 请求启用 SAFRunAs,那么 TCP 套接字不是必需的。

避免故障 避免故障: 可以对使用 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 的命令行参数将针对 /context-root-A/hello.phtml 文件的请求变为针对包含 /cgi-bin/php-cgi 参数的路径的请求。
当您包括 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 会在切换用户标识之前尝试访问响应中要处理的文件。当存在以下目录/文件时,这会导致出现问题:运行 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 将在尝试访问任何目录/文件之前切换用户。

注:

必须在 <Location> 上下文或全局上下文中使用 SAFRunAsEarly。不能在 <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 可映射至用户标识的证书,那么该用户标识也必须传递任何 Require 伪指令。
<Location /certificate_or_basic>
AuthName "SAF RunAs certif"
AuthType basic
Require saf-user USER84 USER103
AuthBasicProvider saf
SAFRunAs %%CERTIF%%
</Location>
如果要求使用与替代标识相关联的 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