LDAP 기반 또는 파일 기반 디렉토리 서비스를 사용하여 Digest 인증을 수행하도록 서버를 구성할 수 있습니다.
Digest 인증을 사용하면 사용자가 사용자 이름과 비밀번호를 일반 텍스트로 전송하지 않고 사용자 이름과 비밀번호를 기준으로 인증할 수 있습니다. 브라우저는 MD5 알고리즘을 사용하여 Web Server가 제공하는 사용자 비밀번호 및 일부 정보를 사용하는 다이제스트 값을 만듭니다.
서버에서 LDAP 기반 디렉토리 서비스를 사용하여 Digest 인증을 수행하는 경우 이 다이제스트 값은 서버측에서 Digest 인증 플러그인을 통해서도 계산되며 클라이언트에서 제공하는 다이제스트 값과 비교됩니다. 다이제스트 값이 일치하면 사용자가 인증됩니다. 이렇게 하려면 디렉토리 서버가 일반 텍스트로 사용자의 비밀번호에 액세스해야 합니다. Sun Java System Directory Server에는 역변환 가능한 비밀번호 플러그인이 있으며, 이는 데이터를 암호화된 형태로 저장하여 나중에 원래 형태로 해독할 수 있는 대칭 암호화 알고리즘을 사용합니다. 오직 Directory Server만이 데이터의 키를 보유합니다.
LDAP 기반 Digest 인증의 경우 서버에 포함된 역전환 가능 비밀번호 플러그인과 digestauth 특정 플러그인을 사용하도록 설정해야 합니다. 웹 서버가 Digest 인증을 처리하도록 구성하려면 dbswitch.conf에 있는 데이터베이스 정의에서 digestauth 등록 정보를 설정해야 합니다.
ACL 방법을 지정하지 않는 경우, 서버는 인증이 필요하면 Digest 또는 Basic 인증을 사용하고 인증이 필요하지 않으면 Basic 인증을 사용합니다. 이것이 가장 많이 사용되는 방법입니다.
표 7–1 Digest 인증 질문 생성
ACL 방법 |
인증 데이터베이스가 지원하는 Digest 인증 |
인증 데이터베이스가 지원하지 않는 Digest 인증 |
---|---|---|
"default" 지정된 사항 없음 |
digest 및 basic |
basic |
"basic" |
basic |
basic |
"digest" |
digest |
ERROR |
method = digest로 설정된 ACL을 처리할 경우 서버는 다음을 수행하여 인증을 시도합니다.
인증 요청 헤더 확인. 없는 경우 Digest 시도를 포함하는 401 응답이 생성되며 프로세스는 중지됩니다.
인증 유형 확인. 인증 유형이 Digest인 경우:
nonce를 확인합니다. 유효하지 않은 경우 이 서버가 새 nonce를 생성하고 401 응답이 생성되며 프로세스가 중지됩니다. 오래된 경우 stale=true로 설정된 401 응답이 생성되며 프로세스가 중지됩니다.
server_root/https-server_name /config/에 있는 magnus.conf 파일에서 DigestStaleTimeout 매개 변수 값을 변경하여 nonce가 새로운 상태를 유지하는 시간을 구성할 수 있습니다. 이 값을 설정하려면 magnus.conf에 다음 줄을 추가합니다.
여기서 seconds는 nonce가 새로운 상태를 유지하는 시간(초)을 나타냅니다. 지정된 시간(초)이 경과하면 nonce가 만료되며 사용자에게 새로운 인증이 요구됩니다.
영역 확인. 일치하지 않는 경우 401 응답이 생성되며 프로세스가 중지됩니다.
인증 디렉토리가 LDAP 기반인 경우 LDAP 디렉토리에 사용자가 있는지 확인하며 인증 디렉토리가 파일 기반인 경우 파일 데이터베이스에 사용자가 있는지 확인합니다. 찾을 수 없는 경우 401 응답이 생성되며 프로세스가 중지됩니다.
디렉토리 서버 또는 파일 데이터베이스에서 요청 다이제스트 값을 가져오고 클라이언트의 요청 다이제스트와 일치하는지 확인합니다. 일치하지 않는 경우 401 응답이 생성되며 프로세스가 중지됩니다.
Authorization-Info 헤더를 만들고 이를 서버 헤더에 삽입합니다.