이들 구성 매개변수는 IBM HTTP Server의 SAF(System Authorization Facility) 기능을 제어합니다. SAF 지시문을 사용하여 IBM HTTP Server에 사용자 인증을 제공하십시오.
AuthSAF 지시문은 운영 체제의 SAF를 사용하여 기본 인증이 수행되는지 여부를 설정합니다.
구문 | AuthSaf on | off |
기본값 | off |
컨텍스트 | directory, .htaccess |
모듈 | mod_auth_saf |
값 | on 또는 off |
다음과 같은 SAF 기능을 사용하려면 AuthSAF 지시문 on을 설정하십시오. SAFRunAs, SAFRequire 또는 SAF authentication. AuthSAF on을 설정할 경우, AuthType Basic을 또한 설정해야 합니다.
valid-user 또는 사용자 목록에 대한 Require 지시문을 설정해야 합니다.
Require valid-uservalid-user를 사용할 경우. ID와 암호가 SAF에 등록되고 OMVS 세그먼트를 갖는 사용자에게 속하지 않는 한 서버가 액세스를 허용하지 않습니다.
Require user SYSADM USER152 BABAR
사용자 목록을 사용할 경우, ID가 인증되고 나열된 사용자 중 하나가 아닌 한 서버가 액세스를 허용하지 않습니다. 사용자가 브라우저에 사용자 이름을 입력하는 방법에 관계없이 httpd.conf 파일에서 사용자 이름을 대문자로 코딩해야 합니다.
선택적으로 그룹에 대한 Require 지시문을 추가할 수 있습니다.
Require group SYS1 WASUSER
이 예제에서는 SAF에 SYS1 및 WASUSER를 정의해야 하며 OMVS 세그먼트가 있어야 합니다. ID 및 암호가 SAF와 나열된 그룹 중 하나에 등록된 사용자에게 속하지 않는 한 액세스가 거부됩니다.
AuthSAFAuthoritative 지시문은 권한 및 인증이 하위 레벨 모듈에 전달되는지 여부를 설정합니다.
구문 | AuthSAFAuthoritative on | off |
기본값 | on |
컨텍스트 | directory, .htaccess |
모듈 | mod_auth_saf |
값 | on 또는 off |
AuthSAFAuthoritative 지시문 off를 설정하면 제공된 사용자 ID와 일치하는 사용자 ID 또는 규칙이 없을 경우 인증 및 권한을 하위 레벨 모듈에 전달할 수 있습니다(modules.c 파일에 정의된 대로). 사용자 ID 또는 규칙을 지정한 경우, 일반 암호 및 액세스 검사가 적용되며 Authentication Required 응답에서 실패가 발생합니다.
사용자 ID가 여러 모듈의 데이터베이스에 표시되거나 유효한 Require 지시문이 여러 모듈에 적용될 경우, 첫 번째 모듈에서 신임을 확인하며 AuthSAFAuthoritative 설정에 관계없이 액세스 권한이 전달되지 않습니다.
기본적으로 제어는 전달되지 않으며 Authentication Required 응답에서 알 수 없는 ID 또는 규칙이 발생합니다. 따라서 설정하지 않는 것이 시스템 보안을 유지하며 NCSA 호응 동작을 강제 실행합니다.
AuthSAFExpiration 지시문은 브라우저의 프롬프트에 표시되는 값을 설정합니다.
구문 | AuthSAFExpiration short_phrase |
기본값 | off |
컨텍스트 | directory, .htaccess |
모듈 | mod_auth_saf |
값 | off 또는 short_phrase |
AuthSAFExpiration 지시문을 어구로 설정하면 IBM HTTP Server에서 SAF 암호가 만기될 경우 갱신하도록 사용자에게 프롬프트할 수 있습니다. 사용자가 유효한 ID와 SAF 암호를 입력했으나 암호가 만기된 경우, 서버는 Authentication Required 응답과 함께 사용자에게 만기된 암호를 갱신하도록 하는 특수한 프롬프트를 리턴합니다. 프롬프트는 범주(AuthName 지시문의 값)와 AuthSAFExpiration 지시문의 short_phrase 값으로 구성됩니다.
<Location /js> AuthType Basic AuthName "zwasa051_SAF" AuthSAF on Require valid-user Require group SYS1 WASUSER AuthSAFExpiration "EXPIRED! oldpw/newpw/newpw" </Location>
사용자가 URL이 /js로 시작하는 파일을 액세스하려고 시도할 경우, 서버는 SAF ID와 암호를 프롬프트합니다. 브라우저에서 범주를 포함하는 프롬프트를 표시합니다. 범주는 AuthName 지시문의 값입니다(이 예제에서 zwasa051_SAF).
사용자가 유효한 ID와 암호를 제공했으나 암호가 만기된 경우, 서버는 프롬프트를 반복하지만 이번에는 zwasa051_SAF EXPIRED! oldpw/newpw/newpw를 사용합니다. 프롬프트가 무엇이든 간에 사용자는 만기된 암호 뒤에 슬래시 뒤에 새 암호 뒤에 또다른 슬래시와 새 암호를 다시 입력해야 합니다.
암호 갱신이 성공할 경우, 서버는 또다른 Authentication Required 응답을 독특한 특수 프롬프트와 함께 전송합니다. 이 마지막 상호 작용은 브라우저가 캐시해야 하는 암호를 이해할 수 있도록 하기 위해 필요합니다. 이 때 프롬프트는 범주 다음 Re-enter new password 프롬프트로 구성됩니다. 이 예제에서는 zwasa051_SAF Re-enter new password입니다.
AuthSAFReEnter 지시문은 암호 변경이 성공한 후 범주 뒤에 추가되는 값을 설정합니다.
구문 | AuthSAFReEnter short_phrase |
기본값 | Re-enter new password |
컨텍스트 | directory, .htaccess |
모듈 | mod_auth_saf |
값 | off 또는 short_phrase |
AuthSAFReEnter 지시문을 "Re-enter new password"가 아닌 어구로 명시적으로 설명하여 관리자가 만기된 암호를 성공적으로 갱신한 후 대체 메시지를 표시하도록 할 수 있습니다. AuthSAFExpiration이 off로 설정된 경우, 이 지시문은 유효하지 않습니다.
<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>
이 예제에서는 만기된 암호가 성공적으로 갱신된 후 서버가 또다른 Authentication Required 응답을 AuthSAFReEnter 지시문의 값과 함께 전송합니다. 이 마지막 상호 작용은 브라우저가 캐시해야 하는 암호를 이해할 수 있도록 하기 위해 필요합니다. 이 때 프롬프트는 범주 다음 특수한 어구로 구성됩니다. 이 예제에서는 zwasa051_SAF Enter new password one more time입니다.
SAFRequire 지시문은 mod_auth_saf에서 Require 지시문을 처리하는지 여부를 판별합니다.
구문 | SAFRequire on | off |
기본값 | off |
컨텍스트 | directory, .htaccess |
모듈 | mod_auth_saf |
값 | on 또는 off |
SAFRequire 지시문 on을 설정하면 mod_auth_saf에서 Require 지시문의 사용자 이름 및 그룹 이름을 처리합니다. SAF에 정의된 그룹을 사용할 경우 지시문 on을 설정하지만, 다른 곳에 정의된 그룹을 사용할 경우 지시문 off를 설정하거나 지시문을 생략해야 합니다.
예를 들어, SAFRequire on을 코딩하는 대신 AuthGroupFile 지시문을 코딩할 경우 mod_auth_saf에서 Require 지시문을 처리할 수 있습니다. 둘 다 코딩하지 마십시오.
SAFRequire on을 설정할 경우, SAF에서 사용자 이름을 유지보수하는 방법에 따라 모든 사용자 이름을 대문자로 나열하십시오. 브라우저에서는 사용자 이름 및 암호를 대소문자에 관계없이 입력할 수 있습니다. mod_auth_saf를 사용하여 Require 지시문을 처리하지 않을 경우, 사용자가 브라우저에 입력할 수 있는 예상되는 모든 대소문자 배치를 사용하여 각각의 사용자 이름을 코딩해야 할 수도 있습니다.
SAFRunAs 지시문은 요청이 제공될 SAF 사용자 ID를 설정합니다.
구문 | SAFRunAs value |
기본값 | off |
컨텍스트 | directory, .htaccess |
모듈 | mod_auth_saf |
값 | off | %%CLIENT%% | %%CERTIF%% | %%CERTIF_REQ%% | <surrogate
ID> Off: 서버는 웹 서버 사용자 ID로 요청을 실행합니다. %%CLIENT%%: 서버가 Authorization 요청 헤더에 제공된 ID로 요청을 실행합니다. 일반적으로 사용자가 브라우저의 팝업 창에 사용자 ID와 암호를 제공하면, 브라우저에서 헤더를 작성합니다. %%CERTIF%%: 서버가 SAF의 SSL 클라이언트 인증과 연관된 ID로 요청을 실행합니다. SSL 인증이 없거나 SSL 인증이 SAF의 ID와 연관되지 않은 경우, %%CLIENT%%가 코딩된 것처럼 처리가 계속됩니다. %%CERTIF_REQ%%: 서버가 SAF의 SSL 클라이언트 인증과 연관된 ID로 요청을 실행합니다. SSL 인증이 없거나 SSL 인증이 SAF의 ID와 연관되지 않은 경우, 서버가 액세스를 허용하지 않습니다. <surrogate ID>: 서버가 지정된 SAF 대리 ID와 연관된 ID로 요청을 실행합니다. %%CERTIF%%, %%CERTIF_REQ%% 및 모든 기타 SAF 인증 또는 권한 양식에 대해 Require 지시문을 코딩하고 AuthSAF 지시문 on을 설정해야 합니다. |
IBM HTTP Server는 TCP 소켓 또는 UNIX 소켓을 사용하여 FastCGI 응용프로그램과 통신할 수 있습니다. 그러나 FastCGI 요청에 대해 SAFRunAs를 사용하는 경우 응용프로그램과의 통신을 위해 TCP 소켓을 사용해야 합니다. FastCGI 응용프로그램을 위해 작성된 UNIX 소켓은 웹 서버 사용자 ID만 액세스할 수 있습니다. SAFRunAs 지시문으로 제어되는 대체 사용자 ID에는 UNIX 소켓에 대한 액세스 권한이 없으므로 요청이 실패합니다.
TCP 소켓을 사용하도록 FastCGI를 구성하려면 FastCGIServer 지시문에 -port 옵션을 사용하거나 FastCGIExternalServer 지시문을 사용하여 mod_fastcgi 모듈에 대한 FastCGI 응용프로그램을 정의하십시오. FastCGIServer 또는 FastCGIExternalServer로 구성하지 않은 동적 FastCGI 서버는 SAFRunAS로 사용할 수 없습니다.
FastCGI 요청에 대해 SAFRunAs를 사용 가능으로 설정하지 않은 경우, TCP 소켓은 필요하지 않습니다.
<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> # mod_auth가 로드되어 먼저 실행되는 경우 # 다른 모듈에서 인증할 수 있습니다. 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 # 파일 x4.grp에는 다음 행이 포함됩니다. wasuser: alice123 ALICE123 guest3 GUEST3 AuthGroupFile /usr/lpp/config/x4.grp AuthBasicProvider saf </Location>