# mod_auth_pg 모듈

이 모듈은 포스트그레스 데이터베이스를 이용하여 사용자 인증을 한다. 쿠키를 사용한 인증도 가능하다.

- AuthPGHost
- AuthPGPort
- AuthPGUser
- AuthPGPassword
- AuthPGOptions
- AuthPGDatabase
- AuthPGUserTable
- AuthPGGroupQuery
- AuthPGGroupTable
- AuthPGPasswordField
- AuthPGUserNameField
- AuthPGGroupNameField
- AuthPGVirtual
- AuthPGDomainField
- AuthPGQuery
- AuthPGEncrypted
- AuthPGAnonymous
- AuthPGAnonymousUserName
- AuthPGCookie
- AuthPGCookieName
- AuthPGCookieSeparator
- AuthPGAuthoritative

  ## AuthPGHost

  Syntax: AuthPGHost host_name
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGHost는 postmaster가 돌고 있는 서버의 이름을 설정한다.

  ## AuthPGPort

  Syntax: AuthPGPort port_number
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGPort는 postmaster와 연결할 수 있는 TCP/IP 포트 번호를 설정한다.

  ## AuthPGUser

  Syntax: AuthPGUser user
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGUser는 데이터베이스 연결시에 사용되는 사용자 이름을 설정한다. 이를 명시하지 않으면 웹써버의 사용자 이름(대개의 경우 nobody)가 사용된다.

  ## AuthPGPassword

  Syntax: AuthPGPassword password
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGPassword는 데이터베이스 연결시에 사용되는 암호를 설정한다.

  ## AuthPGOptions

  Syntax: AuthPGOptions options
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGOptions는 포스트그레스 실행시 주어질 옵션을 설정한다.

  ## AuthPGDatabase

  Syntax: AuthPGDatabase database_name
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGDatabase는 사용자 인증 관련 정보를 갖고 있는 데이터베이스 이름을 설정한다.

  ## AuthPGUserTable

  Syntax: AuthPGUserTable table_name
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGUserTable은 사용자ID와 암호를 갖고 있는 테이블 이름을 설정한다.

  ## AuthPGGroupTable

  Syntax: AuthPGGroupTable table_name
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGGroupTable은 사용자ID와 그룹 이름을 갖고 있는 테이블 이름을 설정한다. 이 테이블은 AuthPGUserTable로 설정한 테이블과 같아도 무방하다.

  ## AuthPGPasswordField

  Syntax: AuthPGPasswordField field_name
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGPasswordField는 AuthPGUserTable에서 암호가 들어 있는 필드 이름을 설정한다.

  ## AuthPGUserNameField

  Syntax: AuthPGUserNameField field_name
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGUserNameField는 AuthPGUserTable에서 사용자ID가 들어 있는 필드 이름을 설정한다. 이 값은 AuthPGGroupTable의 사용자ID 필드 이름과 같아야 한다.

  ## AuthPGGroupNameField

  Syntax: AuthPGGroupNameField field_name
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGGroupNameField는 AuthPGGroupTable에서 그룹 이름이 들어 있는 필드 이름을 설정한다.

  ## AuthPGVirtual

  Syntax: AuthPGVirtual <on | off(default)>
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGVirtual은 사용자 이름이 user@domain인 경우 어떻게 처리할 것인지를 결정한다. 이 값이 off로 되어 있으면 이런 형태의 사용자 이름은 다른 사용자 이름과 마찬가지로 취급된다. 하지만 on으로 설정되면 사용자 이름은 user와 domain으로 나뉘어 user 부분은 AuthPGUserNameField와 비교하고 domain 부분은 AuthPGDomainField와 비교하게 된다. 그러므로 on으로 설정할 경우 '@'을 포함하지 않은 사용자 이름을 사용하려면 domain의 값은 빈 문자열이나 null로 저장되어 있어야 한다.

  ## AuthPGDomainField

  Syntax: AuthPGDomainField field_name
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGDomainField는 AuthPGVirtual이 on으로 설정된 경우에만 유효하며, 사용자 이름의 도메인 부분을 저장하는 필드 이름을 설정한다.

  ## AuthPGQuery

  Syntax: AuthPGQuery query
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  디폴트로 사용하는 질의문 대신 사용할 질의문을 정의한다. 이 질의문은 사용자 ID로 대체될 %s를 포함하고 있어야 하며, 질의문의 결과는 해당 사용자의 암호여야 한다. 만일 AuthPGQuery를 함께 사용하고자 한다면 질의문에 두 개의 %s를 넣어주어야 하며, 각각은 "user@domain"의 user부분과 domain 부분으로 치환된다.
  예: select password from members where name='%s'

  ## AuthPGGroupQuery

  Syntax: AuthPGGroupQuery query
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  사용자의 그룹을 알고자 할 때 디폴트로 사용하는 질의문 대신 사용할 질의문을 정의한다. 이 질의문은 사용자 ID로 대체될 %s를 포함하고 있어야 하며, 질의문의 결과는 해당 사용자가 속한 그룹 목록이어야 한다. 만일 AuthPGQuery를 함께 사용하고자 한다면 질의문에 두 개의 %s를 넣어주어야 하며, 각각은 "user@domain"의 user부분과 domain 부분으로 치환된다.
  예: select groupname from groups where user='%s'

  ## AuthPGEncrypted

  Syntax: AuthPGEncrypted <on(default) | off>
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  암호가 데이터베이스에 원래 값 그대로 저장된다면 AuthPGEncrypted를 `off'로 설정한다. 하지만 암호를 `crypt` 함수를 써서 변환한 다음, 그 값을 데이터베이스에 저장한다면 이 값은 `on'이어야 한다.

  ## AuthPGAnonymous

  Syntax: AuthPGAnonymous <on | off(default)>
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGAnonymous를 `on'으로 설정하면 사용자가 ID와 암호 없이도 AuthPGAnonymousUserName의 설정값(예: guest, 손님 등)을 ID 대신 사용할 수 있다. 이때 암호는 필요 없게 된다.

  ## AuthPGAnonymousUserName

  Syntax: AuthPGAnonymousUserName username
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGAnonymousUserName은 AuthPGAnonymous가 `on'인 경우 사용자들이 공용으로 사용할 ID를 설정한다.

  ## AuthPGCookie

  Syntax: AuthPGCookie <on | off(default)>
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGCookie는 쿠키를 써서 사용자 인증을 할 것인지 아닌지를 설정한다.

  ## AuthPGCookieName

  Syntax: AuthPGCookieName cookie_name
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension
  Default: `AUTHPG`

  AuthPGCookieName은 사용자ID와 암호를 갖고 있는 쿠키의 이름을 설정한다. 그 쿠키는 ``AUTHPG=`사용자ID`:`암호'과 같은 형태를 갖는다. ``:`'은 사용자ID와 암호를 구분하는 기호로, AuthPGCookieSeparator를 써서 다른 기호로 변경 가능하다.

  ## AuthPGCookieSeparator

  Syntax: AuthPGCookieSeparator separator
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension
  Default: `:`

  AuthPGCookieSeparator는 쿠키에서 사용자ID와 암호를 구분할 기호를 설정한다.

  ## AuthPGAuthoritative

  Syntax: AuthPGAuthoritative <on(default) | off>
  Context: directory, .htaccess
  Override: AuthConfig
  Status: Extension

  AuthPGAuthoritative는 다른 mod_auth_* 모듈에 있는 Auth*Authoritative와 같은 역할을 한다.