[z/OS]

SAF-Anweisungen

Die folgenden Konfigurationsparameter steuern das SAF-Feature (System Authorization Facility) für IBM® HTTP Server. Verwenden Sie die SAF-Anweisungen, um die Benutzerauthentifizierung für IBM HTTP Server zu ermöglichen.

Anweisung "AuthSAFAuthoritative"

In früheren Releases wird mit der Anweisung AuthSAFAuthoritative festgelegt, ob die Berechtigung an untergeordnete Module weitergegeben wird. Aufgrund von Änderungen in der Apache HTTP Server-API in diesem Release, wird AuthSAFAuthoritative nicht mehr benötigt bzw. akzeptiert.

Anweisung Beschreibung
Syntax AuthSAFAuthoritative on | off
Standardeinstellung on
Kontext Directory, .htaccess
Modul mod_authnz_saf
Werte on | off

In früheren Releases wird mit der Anweisung AuthSAFAuthoritative festgelegt, ob die Berechtigung an untergeordnete Module weitergegeben wird. Aufgrund von Änderungen in der Apache HTTP Server-API in diesem Release, wird AuthSAFAuthoritative nicht mehr benötigt bzw. akzeptiert.

Wenn die Anweisung in einem früheren Release verwendet wird, sollte sie aus der Konfiguration entfernt werden.

Anweisung "AuthSAFExpiration"

Mit der Anweisung AuthSAFExpiration wird der in der Eingabeaufforderung des Browsers angezeigte Wert festgelegt. Der Server sendet den für die Anweisung AuthName angegebenen Wert und die kurze Phrase in einem HTTP-Antwortheader. Der Browser zeigt sie dem Benutzer anschließend in einem Fenster zur Aufforderung zur Kennworteingabe an. Die kurze Phrase unterliegt denselben Zeicheneinschränkungen wie der für die Anweisung AuthName angegebene Wert. Wenn also ein Sonderzeichen im Fenster zur Aufforderung zur Kennworteingabe angezeigt werden soll, muss der Server das Sonderzeichen aus der EBCDIC-CharsetSourceEnc-Codepage in die ASCII-CharsetDefault-Codepage konvertieren. Wenn Sie den Kleinbuchstaben "a" mit Umlaut (ä) anzeigen möchten und die Datei "httpd.conf" die EBCDIC-Codepage "CharsetSourceEnc IBM-1141" und die ASCII-Codepage "CharsetDefault ISO08859-1" für Deutsch enthält, müssen Sie die Phrase mit dem Hexadezimalwert "43" codieren, der in das richtige ASCII-Zeichen konvertiert wird.

Anweisung Beschreibung
Syntax AuthSAFExpiration kurze_Phrase
Standardeinstellung off
Kontext Directory, .htaccess
Modul mod_authnz_saf
Werte off oder kurze_Phrase

Wenn Sie für die Anweisung AuthSAFExpiration eine Phrase festlegen, kann IBM HTTP Server den Benutzer auffordern, sein SAF-Kennwort zu aktualisieren, falls dieses abgelaufen ist. Wenn der Benutzer eine gültige ID und ein SAF-Kennwort eingibt, das Kennwort jedoch abgelaufen ist, gibt der Server die Antwort Authentication Required (Berechtigung erforderlich) mit einer besonderen Eingabeaufforderung aus, in der der Benutzer das abgelaufene Kennwort aktualisieren kann. Die Eingabeaufforderung enthält den Namen des Realms (den Wert der Anweisung AuthName) und die kurze_Phrase aus der Anweisung AuthSAFExpiration.

Sehen Sie sich beispielsweise die folgende Konfiguration an:
<Location /js>
AuthType basic  
AuthName "zwasa051_SAF"
AuthBasicProvider saf
Require valid-user
Require saf-group SYS1 WASUSER
AuthSAFExpiration "EXPIRED! oldpw/newpw/newpw"
</Location>

Wenn der Benutzer auf eine Datei zugreifen möchte, deren URL mit /js beginnt, wird er vom Server zur Eingabe einer SAF-ID und des entsprechenden Kennworts aufgefordert. Im Browser wird eine Eingabeaufforderung mit dem Realm angezeigt. Der Realm ist der Wert aus der Anweisung AuthName. In diesem Beispiel ist der Wert zwasa051_SAF.

Wenn der Benutzer eine gültige ID und ein Kennwort eingibt, das Kennwort jedoch abgelaufen ist, zeigt der Server die Eingabeaufforderung erneut an, dieses Mal jedoch mit dem Wert zwasa051_SAF EXPIRED! oldpw/newpw/newpw. Der Benutzer muss nun erneut das abgelaufene Kennwort, gefolgt vom neuen Kennwort und dann erneut das neue Kennwort, jeweils getrennt durch Schrägstriche, eingeben.

Wenn die Aktualisierung des Kennworts erfolgreich war, gibt der Server erneut die Antwort Authentication Required (Berechtigung erforderlich) aus, dieses Mal jedoch mit einer besonderen Eingabeaufforderung. Diese letzte Interaktion ist erforderlich, damit das richtige Kennwort im Cache des Browsers gespeichert wird. Die Eingabeaufforderung, die jetzt angezeigt wird, enthält den Realm und die Aufforderung zur erneuten Eingabe des neuen Kennworts. In diesem Beispiel wird Folgendes angezeigt: zwasa051_SAF Re-enter new password.

Anweisung "AuthSAFExpiredRedirect"

Die Anweisung gibt eine URL an, an die eine Anforderung umgeleitet werden soll, falls Ihr Kennwort abgelaufen ist, wenn Sie mod_authnz_saf zur Authentifizierung unter z/OS verwenden.

Dies ist eine Alternative zur Verwendung von "AuthSAFExpiration".

Anweisung Beschreibung
Syntax AuthSAFExpiredRedirect URL
Standardeinstellung off
Kontext Directory, .htaccess
Modul mod_authnz_saf
Werte off oder URL

Anweisung "AuthSAFReEnter"

Mit der Anweisung "AuthSAFReEnter" wird der Wert, der an den Namen des Realms nach einer erfolgreichen Kennwortänderung angehängt wird, definiert. Informationen zum Codieren von Sonderzeichen finden Sie in der Beschreibung der Anweisung "AuthSAFExpiration".

Anweisung Beschreibung
Syntax AuthSAFReEnter kurze_Phrase
Standardeinstellung Re-enter new password
Kontext Directory, .htaccess
Modul mod_authnz_saf
Werte off oder kurze_Phrase

Der Administrator kann die Anweisung AuthSAFReEnter auch explizit so definieren, dass anstelle der Wortfolge "Re-enter new password" eine andere Nachricht nach der erfolgreichen Änderung des abgelaufenen Kennworts angezeigt wird. Wenn jedoch die Anweisung AuthSAFExpiration auf off gesetzt wurde, ist diese Anweisung wirkungslos.

Sehen Sie sich beispielsweise die folgende Konfiguration an:
<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>

In diesem Beispiel sendet der Server nach der erfolgreichen Änderung des abgelaufenen Kennworts eine weitere Antwort Authentication Required (Berechtigung erforderlich) mit dem Wert aus der Anweisung AuthSAFReEnter. Diese letzte Interaktion ist erforderlich, damit das richtige Kennwort im Cache des Browsers gespeichert wird. Die Eingabeaufforderung, die jetzt angezeigt wird, enthält den Namen des Realms gefolgt von einer speziellen Phrase. In diesem Beispiel wird Folgendes angezeigt: zwasa051_SAF Enter new password one more time.

Anweisung "SAFAPPLID"

Überschreibt den Parameter für die Anwendungs-ID (APPLID), der an die Subroutine für Betriebssysteme, pthread_security_applid_np(), in Konfigurationen mit "SAFRunAs" übergeben wird.

Anweisung Beschreibung
Syntax SAFAPPLID Anwendungs-ID
Standardeinstellung Ohne (Wird von einigen Betriebssystemkonfigurationen implizit als "OMVSAPPL" behandelt)
Kontext Directory, .htaccess
Modul mod_authnz_saf
Werte Anwendungs-ID

Wenn die Anweisung SAFRunAs verwendet wird, stellt das Produkt in einigen Sicherheitsproduktkonfigurationen, in denen die Klasse "APPL" aktiv ist, sicher, dass der authentifizierte Benutzer Zugriff auf die Klasse "OMVSAPPL" hat. Wenn SAFAPPLID konfiguriert ist, wird stattdessen die angegebene Anwendungs-ID verwendet.

Anweisung "SAFRunAs"

Mit der Anweisung "SAFRunAs" legen Sie die SAF-Benutzer-ID fest, unter der eine Anforderung bedient wird.

Anweisung Beschreibung
Syntax SAFRunAs Wert
Standardeinstellung off
Kontext Directory, .htaccess
Modul mod_authnz_saf
Werte off | %%CLIENT%% | %%CERTIF%% | %%CERTIF_REQ%% | %%CERTIF%% /prefix | surrogate-username /prefix | <Ersatz-ID>
  • Off: Der Server führt die Anforderung unter der Web-Server-Benutzer-ID aus.
  • %%CLIENT%%: Der Server führt die Anforderung unter der ID aus, die im Header der Berechtigungsanforderung angegeben ist. Im Allgemeinen gibt der Benutzer die ID und das Kennwort in einem Popup-Fenster im Browser ein und der Browser erstellt den Header. SAF muss für die Authentifizierung der URL konfiguriert werden.
  • %%CERTIF%%: Der Server führt die Anforderung unter der ID aus, die dem SSL-Clientzertifikat in SAF zugeordnet ist. Wenn es kein SSL-Zertifikat gibt oder dem SSL-Zertifikat keine ID in SAF zugeordnet ist, wird die Verarbeitung so fortgesetzt, als sei %%CLIENT%% codiert. Weder authn noch authz von SAF muss konfiguriert werden.

    surrogate-user: Der Server ändert die Threadidentität in eine bestimmte Ersatzbenutzer-ID. Der Server muss Lesezugriff auf das Profil BPX.SRV.surrogate-user haben. Wird diese Option verwendet, müssen die Ersatz-ID und die ursprüngliche ID des Web-Servers Zugriff auf die angefordertenen Dateisystemobjekte haben. Diese Einschränkung ist spezifisch für diese SAFRunAs-Methode und ist eine Funktion des z/OS-Sicherheitsmodells. Der Server führt die Anforderung unter der ID aus, die der angegebenen SAF-Ersatz-ID zugeordnet ist.

  • %%CERTIF_REQ%%: Der Server führt die Anforderung unter der ID aus, die dem SSL-Clientzertifikat in SAF zugeordnet ist. Wenn es kein SSL-Zertifikat gibt oder dem SSL-Zertifikat keine ID in SAF zugeordnet ist, lässt der Server keinen Zugriff zu. Weder authn noch authz von SAF muss konfiguriert werden.

    <surrogate-user>: Der Server ändert die Threadidentität in eine bestimmte Ersatzbenutzer-ID. Der Server muss Lesezugriff auf BPX.SRV."surrogate-user" haben. Wenn diese Option verwendet wird, müssen sowohl die Ersatz-ID als auch die ursprüngliche ID des Web-Servers Zugriff auf die angeforderten Dateisystemobjekte haben. Diese Einschränkung ist spezifisch für diese SAFRunAs-Methode und ist eine Funktion des z/OS-Sicherheitsmodells.

    <surrogate-user>: Der Server führt die Anforderung unter der ID aus, die der angegebenen SAF-Ersatz-ID zugeordnet ist.

  • %%CERTIF%% /prefix: Der Server ändert die Threadidentität in die für die SSL-Clientauthentifizierung angegebene Identität für URLs unter /prefix.
    Fehler vermeiden Fehler vermeiden:
    • Diese Syntax ist nur gültig im globalen und im <virtualHost>-Kontext.
    • Der Server wechselt die Identität während einer Anforderung nicht zweimal, falls SAFRunAs auch mit der Ein-Argument-Version innerhalb des <Location>- oder <Directory>-Kontexts konfiguriert ist.
    • Dieses Feature kann zusammen mit "AuthBasicProvider saf" verwendet werden.
    gotcha
  • surrogate-username /prefix: Der Server ändert die Threadidentität in eine bestimmte Ersatzbenutzer-ID für URLs unter /prefix.

    Wenn diese Option verwendet wird, müssen sowohl die Ersatz-ID als auch die ursprüngliche ID des Web-Servers Zugriff auf die angeforderten Dateisystemobjekte haben. Diese Einschränkung ist spezifisch für diese SAFRunAs-Methode und ist eine Funktion des z/OS-Sicherheitsmodells.

    Fehler vermeiden Fehler vermeiden:
    • Diese Syntax ist nur gültig im globalen und im <virtualHost>-Kontext.
    • Der Server wechselt die Identität während einer Anforderung nicht zweimal, falls SAFRunAs auch mit der Ein-Argument-Version innerhalb des <Location>- oder <Directory>-Kontexts konfiguriert ist.
    • Dieses Feature kann zusammen mit "AuthBasicProvider saf" verwendet werden.
    gotcha
  • <Ersatz-ID>: Der Server führt die Anforderung unter der ID aus, die der angegebenen SAF-Ersatz-ID zugeordnet ist.

IBM HTTP Server kann mit FastCGI-Anwendungen über TCP-Sockets oder UNIX-Sockets kommunizieren. Wenn jedoch SAFRunAs für FastCGI-Anforderungen verwendet wird, müssen Sie TCP-Sockets für die Kommunikation mit der Anwendung verwenden. UNIX-Sockets werden für FastCGI-Anwendungen erstellt, auf die nur mit der Benutzer-ID des Web-Servers zugegriffen werden kann. Die alternative Benutzer-ID, die über die Anweisung SAFRunAs gesteuert wird, besitzt keine Zugriffsberechtigung für UNIX-Sockets, daher schlagen entsprechende Anforderungen fehl.

Wenn Sie FastCGI für die Verwendung mit TCP-Sockets konfigurieren möchten, definieren Sie die FastCGI-Anwendung für das Modul mod_fastcgi mit der Anweisung FastCGIServer und der Option -port oder verwenden Sie die Anweisung FastCGIExternalServer. Dynamische FastCGI-Server, die Sie nicht mit der Anweisung FastCGIServer oder FastCGIExternalServer konfigurieren, können nicht mit SAFRunAs verwendet werden.

Wenn Sie SAFRunAs nicht für FastCGI-Anforderungen aktivieren, werden keine TCP-Sockets benötigt.

Fehler vermeiden Fehler vermeiden: Sie können die Anweisung "SAFRunAS" für mit der Anweisung "Action" verarbeitete Ressourcen konfigurieren. In diesem Fall müssen Sie die Anweisung "SAFRunAS" in einem Bereich konfigurieren, der den zweiten Parameter der Anweisung "Action" anstelle des Pfads zur ursprünglichen Ressource abdeckt.
Die Anweisung "SAFRunAs" wird typischerweise in der Anweisung "Location" verwendet:
<Location /context-root-A/>
   SAFRunAS %%CLIENT%%
 </Location>
Anforderungen zu Pfaden, die den Parameter /context-root-A/* enthalten, werden unter dem fernen Benutzer ausgeführt.
Wenn Sie die Anweisung "Action" jedoch ebenfalls verwenden, überschreibt der Server das Kontextstammverzeichnis, das er für den Abgleich verwendet:
# *.phtml mit dem Handler "php-script" verarbeiten.
AddHandler php-script .phtml

# Handler "php-script" als vorhandene CGI definieren.
Action php-script /cgi-bin/php-cgi
Die Anweisung "Action" wandelt eine Anforderung der Datei /context-root-A/hello.phtml in eine Anforderung eines Pfads, der den Parameter /cgi-bin/php-cgi enthält, mit dem Befehlszeilenargument /context-root-A/hello.phtml um.
Wenn Sie die Anweisung "Action" einschließen, schließen Sie die Anweisung "SAFRunAs" wie im folgenden Beispiel ebenfalls in die Anweisung "Location" ein.
<Location /cgi-bin/php-cgi>
   SAFRunAS %%CLIENT%%
 </Location>

Wenn Sie mehrere SAFRunAs-Einstellungen benötigen, verzichten Sie vollständig auf die Anweisung "Action" oder erstellen Sie mehrere Anweisungen des Typs "Action" mit unterschiedlichen zweiten Parametern.

gotcha

Anweisung "SAFRunAsEarly"

Mit der Anweisung SAFRunAsEarly können Sie festlegen, dass vor dem Zugriff auf Verzeichnisse SAFRunAs ausgeführt wird.

Anweisung Beschreibung
Syntax SAFRunAsEarly on | off
Standardeinstellung off
Kontext Location
Modul mod_authnz_saf
Werte on | off
Wenn eine Anforderung empfangen wird, in der SAFRunAs auf %%CLIENT%% gesetzt ist, versucht IHS vor dem Wechsel der Benutzer-ID auf die Datei zuzugreifen, die in der Antwort zurückgegeben werden soll. Dies kann Probleme verursachen, wenn Verzeichnisse/Dateien für den Benutzer, unter dem IHS ausgeführt wird, nicht zugänglich sind, für den %%CLIENT%%-Benutzer aber schon. Beim Zugriffsversuch auf ein solches Verzeichnis würde ein Fehler wie der folgende auftreten:
[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.

Wenn SAFRunAsEarly auf "on" gesetzt ist und SAFRunAs auf %%CLIENT%%, wechselt IHS vor dem Zugriff auf das Verzeichnis oder die Datei die Benutzer-ID.

Anmerkung:

SAFRunAsEarly muss in <Location>-Kontexten oder im globalen Kontext verwendet werden. Die Verwendung in <Directory>-Kontexten ist nicht möglich.

Wenn Sie SAF für Authentifizierung und Berechtigung verwenden möchten, sehen Sie sich das folgende Beispiel an. Dieses Beispiel zeigt das gängigste Szenario für SAF-Benutzer und -Gruppen und entspricht den Voraussetzungen für Webzugriffe.
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
# Codieren Sie "Require valid-user", wenn jeder gültige
# SAF-Benutzer auf die Ressource zugreifen darf.
Require valid-user
#
# Alternativ können Sie eine Liste bestimmter SAF-Benutzer
# bereitstellen, die auf die Ressource zugreifen dürfen.
# Require saf-user USER84 USER85
#
# Alternativ können Sie eine Liste bestimmter SAF-Gruppen
# bereitstellen, deren Mitglieder auf die Ressource zugreifen dürfen.
# Require saf-group WASGRP1 WASGRP2
</Location>
Wenn Sie eine SAF-Datei für die Authentifizierung, aber eine Nicht-SAF-Gruppendatei für die Berechtigung verwenden möchten, sehen Sie sich das folgende Beispiel an. In diesem Beispiel werden Benutzer mit SAF authentifiziert, aber mit einem anderen Mechanismus berechtigt.
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
# Codieren Sie "Require file-group" und eine Liste mit Gruppen, wenn
# ein Benutzer aus jeder der Gruppen in der angegebenen Gruppendatei
# in der Lage sein soll, auf die Ressource zuzugreifen.
# Anmerkung: Es kann jedes Berechtigungsmodul mit zugehöriger Standardkonfiguration verwendet werden.
Require group admin1 admin2
</Location>
Wenn Sie einem Benutzer den Zugriff gewähren möchten, der über SAF oder eine Gruppendatei berechtigt ist, sehen Sie sich das folgende Beispiel an:
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>
Wenn eine Anforderung mit den SAF-Berechtigungen ausgeführt werden soll, die dem authentifizierten Benutzernamen zugeordnet sind, sehen Sie sich das folgende Beispiel an:
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>
Wenn Sie die Änderung abgelaufener SAF-Kennwörter unterstützen möchten, sehen Sie sich das folgende Beispiel an:
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>

Wenn ein Clientzertifikat vorausgesetzt werden soll, damit ein Benutzer auf eine Ressource zugreifen kann, verwenden Sie die Anweisung mod_ibm_ssl. Die Anweisung mod_authnz_saf ist für diese Konfiguration nicht erforderlich. Weitere Informationen finden Sie in der Dokumentation zu den Anweisungen SSLClientAuth und SSLClientAuthRequire.

Wenn Sie ein Clientzertifikat verwenden möchten, um den Benutzer zu bestimmen, für den die Anforderungsverarbeitung durchgeführt wird, sehen Sie sich das folgende Beispiel an. Sollte der Benutzer kein gültiges Zertifikat haben, wird der Zugriff verweigert.
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>
Wenn eine Anforderung mit den SAF-Berechtigungen ausgeführt werden soll, die einem Clientzertifikat zugeordnet sind, aber eine Authentifizierung mit Benutzernamen und Kennwort durchgeführt werden soll, falls das Clientzertifikat keinem SAF-Benutzer zugeordnet ist, sehen Sie sich das folgende Beispiel an. Wenn der Benutzer ein Zertifikat bereitstellt, das SAF einer Benutzer-ID zuordnen kann, muss die Benutzer-ID auch alle Require-Anweisungen übergeben.
<Location /certificate_or_basic>
AuthName "SAF RunAs certif"
AuthType basic  
Require saf-user USER84 USER103
AuthBasicProvider saf
SAFRunAs %%CERTIF%%
</Location>
Wenn eine Anforderung mit den SAF-Berechtigungen ausgeführt werden soll, die einer Ersatz-ID zugeordnet sind, sehen Sie sich das folgende Beispiel an:
<Location /runas_public>
SAFRunAs PUBLIC
# Kann mit SAF- und Nicht-SAF-Authentifizierung/-Berechtigung kombiniert werden
</Location>

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=ihs-dist&topic=rihs_safdirs
Dateiname:rihs_safdirs.html