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.
A diretiva AuthSAFAuthoritative configura se a autorização é transmitida para módulos de nível inferior.
Diretiva | Descrição |
---|---|
Sintaxe | AuthSAFAuthoritative on | off |
Padrão | on |
Contexto | directory, .htaccess |
Módulo | mod_authnz_saf |
Valores | on ou off |
Configurando a diretiva AuthSAFAuthoritative como desativada permite que a autorização seja passada para módulos de nível inferior (conforme definido nos arquivos modules.c), se não houver nenhum ID do usuário ou regra correspondente ao ID do usuário fornecido. Se houver um ID do usuário ou regra especificada, a senha usual e as verificações de acesso serão aplicadas e será resultado uma falha em uma resposta Autenticação Requerida.
Se um ID do usuário aparecer no banco de dados demais de um módulo ou se uma diretiva Require válida se aplicar a mais de um módulo, o primeiro módulo verificará as credenciais e nenhum acesso será transmitido, independente da configuração AuthSAFAuthoritative.
Por padrão, o controle não é transmitido e um ID do usuário desconhecido ou regra resultará em uma resposta de Autorização Obrigatória. Desta forma, a não configuração deste mantém o sistema seguro e força um comportamento compatível com o NCSA.
A diretiva AuthSAFExpiration configura o valor exibido no prompt do navegador. O servidor envia o valor especificado para a diretiva AuthName e esta frase curta em um cabeçalho de resposta HTTP e, então, o navegador os exibe ao usuário em uma janela do prompt de senha. A frase curta é o assunto para as mesmas limitações de caracteres 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 do idioma alemão "CharsetSourceEnc IBM-1141" e a página de códigos ASCII "CharsetDefault ISO08859-1", você deverá codificar a frase usando o valor hexadecimal '43', o qual converte 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 em uma frase permite que o IBM HTTP Server solicite ao usuário para 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 aviso consiste na região (o valor da diretiva AuthName) seguido do 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, o qual é 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.
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 |
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 em uma frase diferente de "Digitar novamente a nova senha" permite que o administrador exiba uma mensagem alternativa após uma senha expirada ter sido atualizada com êxito. Se AuthSAFExpiration foi configurada como 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>
Nesse exemplo, após a senha expirada ser atualizada com êxito, o servidor enviará outra resposta Autenticação Obrigató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.
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 | %%CERTIF%% / ? ? | surrogate-username
/prefix | <surrogate ID> Off: O servidor executará o pedido no ID do usuário do servidor da Web. %%CLIENT%%: O servidor executará o pedido no ID fornecido no cabeçalho do pedido de Autorização. Geralmente, o usuário fornece o ID e a senha em uma janela pop-up no navegador e o navegador cria o cabeçalho. Requer que o SAF seja configurado para autenticar a URL. %%CERTIF%%: O servidor executará o pedido no ID associado ao certificado cliente SSL no SAF. Se não houver nenhum certificado SSL ou se esse certificado não foi associado a um ID no SAF, o processamento continuará como se %%CLIENT%% tivesse sido codificado. Não requer que o SAF authn ou authz seja configurado. %%CERTIF_REQ%%: O servidor executará o pedido no ID associado ao certificado cliente SSL no SAF. Se não houver nenhum certificado SSL ou se esse certificado não foi associado a um ID no SAF, o servidor não permitirá o acesso. Não requer que o SAF authn ou authz seja configurado. ![]() ![]()
![]() ![]()
![]() ![]()
<surrogate ID>: O servidor executará a solicitação sob o ID associado ao ID substituto do SAF especificado. |
O IBM HTTP Server pode se comunicar com aplicativos FastCGI usando soquetes TCP ou soquetes UNIX. Entretanto, ao utilizar o SAFRunAs para pedidos FastCGI, utilize 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 do usuário alternativo controlado com a diretiva SAFRunAs não possui permissão para acessar os soquetes do UNIX, portanto, as solicitações falharão.
Para configurar o FastCGI para utilizar soquetes TCP, defina o aplicativo FastCGI para o módulo mod_fastcgi utilizando a diretiva FastCGIServer com a opção -port ou utilizando a diretiva FastCGIExternalServer. Servidores dinâmicos FastCGI que você não configura com FastCGIServer ou FastCGIExternalServer não podem ser utilizados com SAFRunAS.
Se você não ativar o SAFRunAs para pedidos FastCGI, não serão necessários soquetes 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>
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>