인증은 클라이언트가 누구인지 식별하는 프로세스이며, 일반적으로 클라이언트가 리소스에 액세스할 수 있는지 확인합니다. HTTP 프로토콜은 보안 리소스에 대한 액세스를 협상하는 수단으로 인증을 지원합니다.
클라이언트의 초기 요청은 일반적으로 인증 정보를 포함하지 않는 익명 요청입니다. HTTP 서버 앱은 인증이 필요하다는 것을 나타내면서 익명 요청을 거부할 수 있습니다. 서버 앱은 지원되는 인증 체계를 나타내기 위해 WWW-Authentication 헤더를 보냅니다. 이 문서에서는 HTTP에 대한 몇 가지 인증 체계를 설명하고 WCF(Windows Communication Foundation)에서의 지원에 대해 설명합니다.
HTTP 인증 체계
서버는 클라이언트에서 선택할 수 있도록 여러 인증 체계를 지정할 수 있습니다. 다음 표에서는 Windows 애플리케이션에서 일반적으로 발견되는 인증 체계 중 일부에 대해 설명합니다.
| 인증 체계 | 설명 |
|---|---|
| 익명 | 익명 요청에는 인증 정보가 포함되지 않습니다. 익명은 모든 사람에게 리소스에 대한 액세스 권한을 부여하는 것과 같습니다. |
| 기초 | 기본 인증은 클라이언트의 사용자 이름과 암호를 포함하는 Base64로 인코딩된 문자열을 보냅니다. Base64는 암호화의 한 형태가 아니며 사용자 이름과 비밀번호를 평문으로 보내는 것과 동일하게 간주되어야 합니다. 리소스를 보호해야 하는 경우 기본 인증 이외의 인증 체계를 사용하는 것이 좋습니다. |
| 요약 | 다이제스트 인증은 기본 인증을 대체하기 위한 챌린지-응답 체계입니다. 서버는 nonce 라는 임의의 데이터 문자열을 클라이언트에 챌린지로 보냅니다. 클라이언트는 추가 정보 중 사용자 이름, 암호 및 nonce를 포함하는 해시로 응답합니다. 이 교환이 도입하는 복잡성과 데이터 해시로 인해 이 인증 체계에서 사용자의 자격 증명을 훔치고 다시 사용하기가 더 어려워집니다. 다이제스트 인증을 사용하려면 Windows 도메인 계정을 사용해야 합니다. 다이제스트 영역 은 Windows 도메인 이름입니다. 따라서 다이제스트 인증을 통해 Windows XP Home Edition과 같은 Windows 도메인을 지원하지 않는 운영 체제에서 실행되는 서버를 사용할 수 없습니다. 반대로 클라이언트가 Windows 도메인을 지원하지 않는 운영 체제에서 실행되는 경우 인증 중에 도메인 계정을 명시적으로 지정해야 합니다. |
| NTLM | NTLM(NT LAN Manager) 인증은 다이제스트 인증의 보다 안전한 변형인 챌린지-응답 체계입니다. NTLM은 Windows 자격 증명을 사용하여 인코딩되지 않은 사용자 이름 및 암호 대신 챌린지 데이터를 변환합니다. NTLM 인증을 사용하려면 클라이언트와 서버 간에 여러 교환이 필요합니다. 서버 및 중간 프록시는 인증을 성공적으로 완료하려면 영구 연결을 지원해야 합니다. |
| 협상하다 | 협상 인증은 가용성에 따라 Kerberos 프로토콜과 NTLM 인증 간에 자동으로 선택됩니다. Kerberos 프로토콜은 사용 가능한 경우 사용됩니다. 그렇지 않으면 NTLM이 시도됩니다. Kerberos 인증은 NTLM에서 크게 향상됩니다. Kerberos 인증은 NTLM보다 빠르며 원격 머신에 대한 상호 인증 및 자격 증명 위임을 사용할 수 있습니다. |
| Windows Live ID (윈도우즈 라이브 ID) | 기본 Windows HTTP 서비스에는 페더레이션 프로토콜을 사용하는 인증이 포함됩니다. 그러나 WCF의 표준 HTTP 전송은 Microsoft Windows Live ID와 같은 페더레이션 인증 체계의 사용을 지원하지 않습니다. 이 기능에 대한 지원은 현재 메시지 보안을 사용하여 사용할 수 있습니다. 자세한 내용은 페더레이션 및 발급된 토큰을 참조하세요. |
인증 체계 선택
HTTP 서버에 대한 잠재적인 인증 체계를 선택할 때 고려해야 할 몇 가지 항목은 다음과 같습니다.
리소스를 보호해야 하는지 여부를 고려합니다. HTTP 인증을 사용하려면 더 많은 데이터를 전송해야 하며 클라이언트와의 상호 운용성을 제한할 수 있습니다. 보호할 필요가 없는 리소스에 대한 익명 액세스를 허용합니다.
리소스를 보호해야 하는 경우 필요한 수준의 보안을 제공하는 인증 체계를 고려합니다. 여기에 설명된 가장 약한 표준 인증 체계는 기본 인증입니다. 기본 인증은 사용자의 자격 증명을 보호하지 않습니다. 가장 강력한 표준 인증 체계는 Kerberos 프로토콜을 결과로 하는 인증 협상입니다.
예를 들어, 서버는 수락할 준비가 되어 있지 않거나 보호된 리소스를 적절히 보호하지 않는 체계를 WWW-Authentication) 헤더에 표시해서는 안 됩니다. 클라이언트는 서버가 제공하는 인증 체계 중 하나를 자유롭게 선택할 수 있습니다. 일부 클라이언트는 기본적으로 약한 인증 체계 또는 서버 목록의 첫 번째 인증 체계를 사용합니다.