인증 스킴은 클라이언트가 서버에 자신의 신원을 인증하기 위해 사용하는 특정 규칙과 프로토콜의 집합을 나타냅니다. 평문으로 전송하므로 중간자 공격에 노출될 위험이 있습니다.
평문 : 암호화나 해시 처리가 되지 않은 텍스트 데이터를 가리킵니다.
Basic Authentication: 사용자 이름과 비밀번호를 Base64로 인코딩하여 서버에 전송하는 방식으로 동작합니다.
Digest Authentication: Digest Authentication은 Basic Authentication보다 안전한 대체 방법입니다. Digest Authentication은 비밀번호를 전송하는 대신 비밀번호의 해시값과 함께 요청을 서버에 보내어 보안을 향상시킵니다.
가장 일반적으로 사용되는 해시 함수 중 하나는 MD5와 SHA-1이지만, 이러한 알고리즘은 현재 보안적으로 취약하다고 여겨집니다. 더 강력한 해시 함수로는 SHA-256, SHA-512, bcrypt, scrypt, Argon2 등이 있습니다. 이러한 알고리즘은 고려해야 하는 보안 요구사항에 따라 선택되며, 일반적으로 비밀번호 해시에는 솔트(salt)라고 불리는 임의의 값을 추가하여 레인보우 테이블 공격과 같은 공격을 어렵게 만듭니다.
Bearer Token Authentication: Bearer Token Authentication은 토큰을 사용하여 인증하는 방법입니다. 클라이언트는 토큰을 발급받고, 이 토큰을 HTTP 요청의 Authorization 헤더에 포함시켜 서버에 인증합니다. OAuth 2.0 및 JSON Web Tokens (JWT)가 이러한 방식을 지원하는 대표적인 예시입니다.
API Key Authentication: API Key Authentication은 API를 사용하는 클라이언트가 고유한 API 키를 사용하여 인증하는 방법입니다. 이 키는 HTTP 요청의 헤더나 쿼리 매개변수에 포함됩니다.
Client Certificate Authentication: 클라이언트 인증서를 사용하여 클라이언트를 인증하는 방법입니다. 클라이언트는 서버로부터 서명된 인증서를 받고, 이를 사용하여 서버에 연결합니다.
Kerberos Authentication: 주로 기업 환경에서 사용되는 안전한 인증 프로토콜로, 사용자가 네트워크 리소스에 대한 액세스 권한을 얻는 데 사용됩니다.