![[z/OS]](../images/ngzos.gif)
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"
- Anweisung "AuthSAFExpiration"
- Anweisung "AuthSAFExpiredRedirect"
- Anweisung "AuthSAFReEnter"
- Anweisung "SAFAPPLID"
- Anweisung "SAFRunAs"
- Anweisung "SAFRunAsEarly"
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.
<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.
<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>
|
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.

<Location /context-root-A/>
SAFRunAS %%CLIENT%%
</Location>
Anforderungen zu Pfaden, die den Parameter /context-root-A/* enthalten, werden unter dem fernen Benutzer ausgeführt.# *.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.<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.
gotchaAnweisung "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 |
[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.
SAFRunAsEarly muss in <Location>-Kontexten oder im globalen Kontext verwendet werden. Die Verwendung in <Directory>-Kontexten ist nicht möglich.
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>
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>
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>
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.
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
# Kann mit SAF- und Nicht-SAF-Authentifizierung/-Berechtigung kombiniert werden
</Location>