![[z/OS]](../images/ngzos.gif)
Diretivas SAF
Estes parâmetros de configuração controlam o recurso System Authorization Facility (SAF) para o IBM® HTTP Server. Use as diretivas SAF para fornecer ao IBM HTTP Server a autenticação do usuário.
- Diretiva AuthSAFAuthoritative
- Diretiva AuthSAFExpiration
- Diretiva AuthSAFExpiredRedirect
- Diretiva AuthSAFReEnter
- diretiva SAFAPPLID
- Diretiva SAFRunAs
- diretiva SAFRunAsEarly
Diretiva AuthSAFAuthoritative
Em liberações anteriores, a diretiva AuthSAFAuthoritative configura se a autorização é transmitida para módulos de nível inferior. Devido às mudanças na API do Servidor HTTP Apache nesta liberação, AuthSAFAuthoritative não é mais necessário ou aceito.
Diretiva | Descrição |
---|---|
Sintaxe | AuthSAFAuthoritative on | off |
Padrão | on |
Contexto | directory, .htaccess |
Módulo | mod_authnz_saf |
Valores | on | off |
Em liberações anteriores, a diretiva AuthSAFAuthoritative configura se a autorização é passada para módulos de nível inferior. Devido às mudanças na API do Servidor HTTP Apache nesta liberação, AuthSAFAuthoritative não é mais necessário ou aceito.
Se for usada em uma liberação anterior, ela deverá ser removida da configuração.
Diretiva AuthSAFExpiration
A diretiva AuthSAFExpiration configura o valor exibido no prompt do navegador. O servidor envia o valor especificado para a diretiva AuthName e essa frase curta em um cabeçalho de resposta HTTP, depois o navegador os exibe para o usuário em uma janela do prompt de senha. A frase curta está sujeita às mesmas limitações de caractere que o valor especificado para a diretiva AuthName. Portanto, para exibir um caractere especial na janela do prompt de senha, o servidor deve converter o caractere especial da página de códigos EBCDIC CharsetSourceEnc para a página de códigos ASCII CharsetDefault. Por exemplo, se desejar exibir um 'a' minúsculo com trema, e o arquivo httpd.conf contiver a página de códigos EBCDIC no idioma alemão "CharsetSourceEnc IBM-1141" e a página de códigos ASCII "CharsetDefault ISO08859-1", deve-se codificar a frase usando o valor hexadecimal '43', que é convertido para o caractere ASCII correto.
Diretiva | Descrição |
---|---|
Sintaxe | AuthSAFExpiration short_phrase |
Padrão | off |
Contexto | directory, .htaccess |
Módulo | mod_authnz_saf |
Valores | off ou short_phrase |
A configuração da diretiva AuthSAFExpiration para uma frase permite que o IBM HTTP Server solicite ao usuário atualizar sua senha SAF se ela expirar. Quando o usuário digita um ID e senha do SAF válidos e a senha expirou, o servidor retornará uma resposta Autenticação Obrigatória com um aviso especial para permitir que o usuário atualize a senha expirada. O prompt consiste na região (o valor da diretiva AuthName) seguida pelo valor short_phrase da diretiva AuthSAFExpiration.
<Location /js>
AuthType basic
AuthName "zwasa051_SAF"
AuthBasicProvider saf
Require valid-user
Require saf-group SYS1 WASUSER
AuthSAFExpiration "EXPIRED! oldpw/newpw/newpw"
</Location>
Se o usuário tentar acessar um arquivo cuja URL começa com /js, o servidor solicitará um ID do SAF e senha. O navegador exibirá um aviso que contém a região. A região é o valor da diretiva AuthName, que é zwasa051_SAF neste exemplo.
Quando o usuário fornece um ID e senha válidos e a senha expirou, o servidor repetirá o aviso, mas dessa vez com o valor zwasa051_SAF EXPIRADO! oldpw/newpw/newpw. Seja qual for o aviso, o usuário deve digitar novamente a senha expirada, seguido de uma barra, de uma nova senha, de outra barra e da nova senha novamente.
Se a atualização da senha for bem-sucedida, o servidor enviará outra resposta Autenticação Obrigatória com um aviso especial distinto. Essa última interação é necessária, para forçar o navegador a entender qual senha é necessário armazenar em cache. O aviso dessa vez irá consistir na região seguida pelo aviso Digitar Novamente a Nova Senha. Nesse exemplo, seria zwasa051_SAF Digitar Novamente a Nova Senha.
Diretiva AuthSAFExpiredRedirect
A diretiva AuthSAFExpiredRedirect especifica a URL para a qual uma solicitação deverá ser redirecionada caso sua senha expire quando estiver usando mod_authnz_saf para autenticação no z/OS.
Essa é uma alternativa para usar AuthSAFExpiration.
Diretiva | Descrição |
---|---|
Sintaxe | AuthSAFExpiredRedirect url |
Padrão | off |
Contexto | directory, .htaccess |
Módulo | mod_authnz_saf |
Valores | off ou url |
Diretiva AuthSAFReEnter
A diretiva AuthSAFReEnter configura o valor anexado à região após uma alteração de senha bem-sucedida. Para obter informações sobre como codificar caracteres especiais, consulte a diretiva BAuthSAFExpiration.
Diretiva | Descrição |
---|---|
Sintaxe | AuthSAFReEnter short_phrase |
Padrão | Reinsira a nova senha |
Contexto | directory, .htaccess |
Módulo | mod_authnz_saf |
Valores | off ou short_phrase |
A configuração da diretiva AuthSAFReEnter explicitamente para uma frase diferente de "Reinserir nova senha" permite que o administrador exiba uma mensagem alternativa após uma senha expirada ter sido atualizada com sucesso. Se AuthSAFExpiration tiver sido configurado para off, essa diretiva não terá efeito.
<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>
Neste exemplo, após a senha expirada ser atualizada com sucesso, o servidor enviará outra resposta Autenticação Necessária com o valor da diretiva AuthSAFReEnter. Essa última interação é necessária, para forçar o navegador a entender qual senha é necessário armazenar em cache. O aviso dessa vez irá consistir na região seguida pela frase especial. Nesse exemplo, seria zwasa051_SAF Digitar Novamente a Nova Senha.
diretiva SAFAPPLID
Substitui o parâmetro ID do aplicativo (APPLID) transmitido para sub-rotinas pthread_security_applid_np() dos sistemas operacionais sob configurações com SAFRunAs".
Diretiva | Descrição |
---|---|
Sintaxe | application-id do SAFAPPLID |
Padrão | Nenhum (Algumas configurações de SO tratam-no como "OMVSAPPL" implicitamente) |
Contexto | directory, .htaccess |
Módulo | mod_authnz_saf |
Valores | application-id |
Quando a diretiva SAFRunAs é usada sob algumas configurações de produto de segurança onde a classe "APPL" está ativa, o produto de segurança verificará se o usuário autenticado tem acesso à classe "OMVSAPPL". Se o SAFAPPLID estiver configurado, o application-id é usado em seu lugar.
Diretiva SAFRunAs
A diretiva SAFRunAs configura o ID do usuário do SAF, no qual um pedido será atendido.
Diretiva | Descrição |
---|---|
Sintaxe | SAFRunAs value |
Padrão | off |
Contexto | directory, .htaccess |
Módulo | mod_authnz_saf |
Valores | off | %%CLIENT%% | %%CERTIF%% | %%CERTIF_REQ%% | %%CERTIF%% /prefix |
surrogate-username /prefix | <surrogate ID>
|
O IBM HTTP Server pode se comunicar com aplicativos FastCGI usando soquetes TCP ou soquetes UNIX. Entretanto, durante o uso de SAFRunAs para solicitações FastCGI, deve-se usar soquetes TCP para comunicação com o aplicativo. Os soquetes UNIX que são criados para aplicativos FastCGI estão acessíveis apenas para o ID do usuário do servidor da Web. O ID de usuário alternativo controlado com a diretiva SAFRunAs não tem permissão para acessar os soquetes UNIX, portanto, as solicitações falharão.
Para configurar FastCGI para usar soquetes TCP, defina o aplicativo FastCGI para o módulo mod_fastcgi usando a diretiva FastCGIServer com a opção -port ou usando a diretiva FastCGIExternalServer. Servidores FastCGI dinâmicos que você não configurar com FastCGIServer ou FastCGIExternalServer não são utilizáveis com SAFRunAs.
Se você não ativar SAFRunAs para solicitações FastCGI, os soquetes TCP não serão necessários.

<Location /context-root-A/>
SAFRunAS %%CLIENT%%
</Location>
As solicitações para caminhos
que contêm o parâmetro /context-root-A/* são executadas como o usuário remoto.# 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
A diretiva Action transforma uma solicitação para o arquivo /context-root-A/hello.phtml
em uma solicitação para um caminho que contém o parâmetro /cgi-bin/php-cgi
com um argumento de linha de comandos de /context-root-A/hello.phtml.<Location /cgi-bin/php-cgi>
SAFRunAS %%CLIENT%%
</Location>
Se precisar de várias configurações de SAFRunAs, dispense totalmente a diretiva Action ou crie várias diretivas Action com parâmetros secundários diferentes.
gotchaDiretiva SAFRunAsEarly
A diretiva SAFRunAsEarly permite que o SAFRunAs seja executado antes de quaisquer diretórios serem acessados.
Diretiva | Descrição |
---|---|
Sintaxe | SAFRunAsEarly on | off |
Padrão | off |
Contexto | local |
Módulo | mod_authnz_saf |
Valores | on | off |
[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.
Se SAFRunAsEarly estiver configurado com SAFRunAs definido para %%CLIENT%%, o IHS alternará o usuário antes de qualquer tentativa de acesso ao diretório/arquivo.
SAFRunAsEarly deve ser usada em contextos <Location> ou contexto global. Ela não pode ser usada em contextos <Directory>.
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
</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>
Se desejar requerer um certificado de cliente antes de um usuário poder acessar um recurso, use a diretiva mod_ibm_ssl. A diretiva mod_authnz_saf não é necessária para esta configuração. Para obter informações adicionais, consulte a documentação para as diretivas SSLClientAuth e 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>