Ces paramètres de configuration contrôlent la fonctionnalité SAF (System Authorization Facility) pour IBM HTTP Server. Utilisez les directives SAF pour accorder à IBM HTTP Server l'authentification d'utilisateur.
La directive AuthSAF détermine si l'authentification de base est effectuée à l'aide du SAF du système d'exploitation.
Syntaxe | AuthSaf on | off |
Valeur par défaut | off |
Contexte | directory, .htaccess |
Module | mod_auth_saf |
Valeurs | on ou off |
Définissez la directive AuthSAF sur on pour utiliser n'importe quelle fonction SAF : SAFRunAs, SAFRequire ou l'authentification SAF. Lorsque vous définissez AuthSAF on, vous devez également le faire pour AuthType Basic.
Vous devez définir une directive Require directive pour valid-user ou pour une liste d'utilisateurs.
Require valid-userAvec valid-user, le serveur ne permet aucun accès à moins que l'ID et le mot de passe soient associés à un utilisateur enregistré dans SAF et présentent un segment OMVS.
Require user SYSADM USER152 BABAR
Avec une liste d'utilisateurs, le serveur n'autorise l'accès que si l'ID est authentifié et est associé à un utilisateur de la liste. Vous devez coder les noms utilisateur en lettres majuscules dans le fichier httpd.conf, quelle que soit la manière dont l'utilisateur entre les noms dans le navigateur.
Vous pouvez, si vous le souhaitez, ajouter une directive Require pour un groupe.
Require group SYS1 WASUSER
Dans cet exemple, les groupes SYS1 et WASUSER doivent être définis dans SAF et doivent présenter des segments OMVS. L'accès n'est autorisé que lorsque l'ID et le mot de passe correspondent à un utilisateur enregistré dans SAF et à l'un des groupes de la liste.
La directive AuthSAFAuthoritative indique si l'autorisation et l'authentification sont transmises à des modules de niveau inférieur.
Syntaxe | AuthSAFAuthoritative on | off |
Valeur par défaut | on |
Contexte | directory, .htaccess |
Module | mod_auth_saf |
Valeurs | on ou off |
Si vous définissez la directive AuthSAFAuthoritative sur off, l'authentification et l'autorisation sont toutes les deux transmises à des modules de niveau inférieur (selon ce qui est défini dans les fichiers modules.c), si aucun ID utilisateur ou aucune règle ne correspond à l'ID utilisateur fourni. S'il est spécifié un ID utilisateur ou une règle, le mot de passe et les vérifications d'accès habituels sont appliqués et un échec apparaît dans une réponse d'authentification requise.
Si un ID utilisateur apparaît dans la base de données de plusieurs modules, ou si une directive Require valide s'applique à plusieurs modules, le premier module vérifie les données d'identification et aucun accès n'est transmis, quel que soit le paramètre défini pour AuthSAFAuthoritative.
Par défaut, le contrôle n'est pas transmis et un ID utilisateur inconnu aboutit à une réponse Authentification requise. Si vous n'en définissez aucune, le système reste sécurisé et le comportement respecte obligatoirement le format NCSA.
La directive AuthSAFExpiration définit la valeur affichée dans l'invite du navigateur.
Syntaxe | AuthSAFExpiration phrase_courte |
Valeur par défaut | off |
Contexte | directory, .htaccess |
Module | mod_auth_saf |
Valeurs | off ou phrase_courte |
Si vous définissez une phrase pour la directive AuthSAFExpiration, IBM HTTP Server peut inviter l'utilisateur à mettre à jour son mot de passe SAF à son expiration. Lorsque l'utilisateur entre un ID valide et un mot de passe SAF mais que ce dernier a expiré, le serveur lui renvoie une réponse indiquant que l'authentification est requise avec une invite spéciale permettant à l'utilisateur de mettre à jour le mot de passe expiré. L'invite est constituée d'un domaine (la valeur de la directive AuthName), suivi de la valeur phrase_courte de la directive AuthSAFExpiration.
<Location /js> AuthType Basic AuthName "zwasa051_SAF" AuthSAF on Require valid-user Require group SYS1 WASUSER AuthSAFExpiration "EXPIRED! oldpw/newpw/newpw" </Location>
Si l'utilisateur essaie d'accéder à un fichier dont l'URL commence par /js, le serveur invite à entrer un ID et un mot de passe SAF. Le navigateur affiche une invite contenant le domaine. Le domaine correspond à la valeur contenue dans la directive AuthName, c'est-à-dire zwasa051_SAF dans cet exemple.
Lorsque l'utilisateur entre un ID et un mot de passe valide, si le mot de passe a expiré, le serveur relance l'invite, mais avec la valeur zwasa051_SAF EXPIRED! oldpw/newpw/newpw. Quelle que soit l'invite, l'utilisateur doit entrer à nouveau le mot de passe expiré, suivi d'une barre oblique, un nouveau mot de passe, une autre barre oblique et encore le nouveau mot de passe.
Si le mot de passe est mis à jour correctement, le serveur envoie une autre réponse indiquant authentification requise avec une invite spéciale différente. Cette dernière interaction est nécessaire pour forcer le navigateur à comprendre quel mot de passe il doit mettre en mémoire cache. L'invite cette fois est constituée du domaine suivi de l'invite Entrez à nouveau le mot de passe. Dans cet exemple, ce serait zwasa051_SAF Ré-entrer nouveau mot de passe.
La directive AuthSAFReEnter définit la valeur ajoutée au domaine après la modification d'un mot de passe.
Syntaxe | AuthSAFReEnter phrase_courte |
Valeur par défaut | Ré-entrer nouveau mot de passe |
Contexte | directory, .htaccess |
Module | mod_auth_saf |
Valeurs | off ou phrase_courte |
La définition explicite d'une phrase autre que "Ré-entrer nouveau mot de passe" pour la directive AuthSAFReEnter permet à l'administrateur d'afficher un autre message après la mise à jour d'un mot de passe expiré. Si AuthSAFExpiration a été définie sur OFF, cette directive n'a pas d'effet.
<Location /js> AuthType Basic AuthName "zwasa051_SAF" AuthSAF on Require user SYSADM USER152 BABAR AuthSAFExpiration "EXPIRED! oldpw/newpw/newpw" AuthSAFReEnter "Enter new password one more time"</Location>
Dans cet exemple, une fois que le mot de passe expiré a été mis à jour, le serveur envoie une autre réponse indiquant que l'authentification est requise avec la valeur issue de la directive AuthSAFReEnter. Cette dernière interaction est nécessaire pour forcer le navigateur à comprendre quel mot de passe il doit mettre en mémoire cache. L'invite cette fois est constituée du domaine suivi d'une phrase spéciale. Dans cet exemple, ce serait zwasa051_SAF Ré-entrer nouveau mot de passe.
La directive SAFRequire détermine si le module mod_auth_saf exécute la directive Require.
Syntaxe | SAFRequire on | off |
Valeur par défaut | off |
Contexte | directory, .htaccess |
Module | mod_auth_saf |
Valeurs | on ou off |
Si vous définissez la directive SAFRequire sur on, le module mod_auth_saf traite les noms d'utilisateur et de groupe dans la directive Require. Si vous utilisez des groupes définis dans SAF, vous devez définir la directive sur on, mais si vous utilisez des groupes définis ailleurs, vous devez définir la directive sur off ou ignorer la directive.
Par exemple, le module mod_auth_saf peut exécuter la directive Require si vous avez codé la directive AuthGroupFile au lieu de coder la directive SAFRequire sur on. Ne codez pas les deux.
Si vous définissez SAFRequire sur on, répertoriez tous les noms d'utilisateur en lettres capitales, c'est ainsi que SAF gère les noms d'utilisateur. Dans le navigateur, L'utilisateur peut entrer le nom d'utilisateur et le mot de passe sans se soucier de la casse. Si vous n'utilisez pas le module mod_auth_saf pour exécuter la directive Require, vous devrez peut-être coder chaque nom d'utilisateur dans toutes les possibilités de lettres majuscules ou minuscules que l'utilisateur pourrait entrer dans le navigateur.
La directive SAFRunAs définit l'ID utilisateur SAF sous lequel une demande sera servie.
Syntaxe | valeur SAFRunAs |
Valeur par défaut | off |
Contexte | directory, .htaccess |
Module | mod_auth_saf |
Valeurs | off | %%CLIENT%% | %%CERTIF%% | %%CERTIF_REQ%% | <ID substitut> Off : le serveur exécute la demande sous l'ID utilisateur du serveur Web. %%CLIENT%% : le serveur exécute la demande sous l'ID proposé dans l'en-tête de la demande d'autorisation. Généralement, l'utilisateur entre l'ID et le mot de passe dans une fenêtre en incrustation du navigateur et le navigateur crée l'en-tête. %%CERTIF%% : le serveur exécute la demande sous l'ID associé au certificat de client SSL dans SAF. S'il n'existe aucun certificat SSL ou si le certificat SSL n'a pas encore été associé à un ID dans SAF, le traitement se poursuit comme si %%CLIENT%% avait été codé. %%CERTIF_REQ%% : le serveur exécute la demande sous l'ID associé au certificat de client SSL dans SAF. S'il n'existe aucun certificat SSL ou si le certificat SSL n'a pas encore été associé à un ID dans SAF, le serveur n'autorisera pas l'accès. <ID substitut> : le serveur exécute la demande sous l'ID associé à l'ID de substitut SAF spécifié. Pour %%CERTIF%%, %%CERTIF_REQ%%, et pour toutes les formes d'authentification ou d'autorisation SAF, vous devez coder une directive Require et définir la directive AuthSAF sur on. |
IBM HTTP Server peut communiquer avec des applications FastCGI en utilisant des sockets TCP ou des sockets UNIX. Toutefois, si vous utilisez SAFRunAs pour des demandes FastCGI, vous devez utiliser des sockets TCP pour pouvoir communiquer avec l'application. Les sockets UNIX créés pour des applications FastCGI sont accessibles uniquement par l'ID utilisateur du serveur Web. L'ID utilisateur substitut contrôlé par la directive SAFRunAs n'a pas les droits suffisants pour accéder aux sockets UNIX, d'où l'échec des demandes.
Pour configurer FastCGI de façon à utiliser des sockets TCP, définissez l'application FastCGI sur le module mod_fastcgi à l'aide de la directive FastCGIServer avec l'option -port ou à l'aide de la directive FastCGIExternalServer. Les serveurs FastCGI dynamiques que vous ne configurez pas avec les directives FastCGIServer ou FastCGIExternalServer ne peuvent pas être utilisés avec FRunAS.
Si vous n'activez pas SAFRunAs pour les demandes FastCGI, les sockets TCP ne sont pas requis.
<Location /x1> AuthType Basic AuthName x1 Require valid-user SAFRequire On AuthSAF on </Location>
<Location /x2> AuthType Basic AuthName x2 Require user ALICE123 BOB456 CAROL789 SAFRequire On AuthSAF on <IfModule mod_auth.c> # Si mod_auth est chargé, vérifiez qu'il permet d'authentifier # d'autres modules s'il est exécuté en premier. AuthAthoritative off </IfModule> </Location>
<Location /x3> AuthType Basic AuthName x3 Require group WASUSER SAFRequire on AuthSAF on </Location>
<Location /x4> AuthType Basic AuthName x4 Require group wasuser # Le fichier x4.grp contient cette ligne : wasuser: alice123 ALICE123 guest3 GUEST3 AuthGroupFile /usr/lpp/config/x4.grp AuthBasicProvider saf </Location>