기타

[HTTP] HTTP 인증

Alexim 2022. 9. 26. 00:00

HTTP 인증

http는 액세스 제어 및 인증을 위한 일반 프레임워크를 제공한다.

일반적인 HTTP 인증 프레임워크

  • 서버는 클라이언트에게 401 (Unauthorized) 응답 코드를 가지고 응답한다. 최소한 한 번의 시도에 포함된 WWW-Authenticate 응답헤더로 권한을 부여하는 방법에 대한 정보를 제공한다.
  • 서버와 인증을 하기를 원하는 클라이언트는 Authorization 요청 헤더 필드에 인증 정보를 포함함으로써 인증을 수행할 수 있다.
  • 그림에서 보는 것과 같이 Basic 인증의 경우, 교환은 안전을 위해 HTTPS (TLS) 위에서 발생하여야 한다.
  • 위의 그림에 사용된 “Basic” 인증 체계는 인코딩되지만 암호화되지 않은 자격 증명을 보낸다. 교환이 보완 연결(HTTP/TLS)을 통하지 않는 한 이것은 완전히 안전하지 않다.

프록시 인증

동일한 시도 및 응답 메커니즘이 프록시 인증을 위해서도 사용될 수 있다. 이 경우에 이것은 인증을 요구하는 중간 프록시이다.
리소스 인증 및 프록시 인증은 함께 존재 할 수 있기 때문에, 헤더와 상태 코드의 다른 세트가 필요하다. 프록시의 경우, 요청에 대한 상태 코드는 407 , 요청 헤더는 (Proxy-Authentication 이고 요청 헤더는 프록시 서버에 인증 정보를 제공하기 위해 사용된다., 응답 헤더인 Proxy-Authoricate에는 프록시에 적용 가능한 하나 이상의 챌린지가 포함되며 요청 헤더는 프록시 서버에 인증 정보를 제공하는 데 사용된다.

접근 거부

프록시 서버가 주어진 리소스에 대한 접근 권한을 얻기 위해 적절하지 않은 유효한 인증 정보를 수신한다면, 서버는 403``Forbidden 상태 코드로 응답해야 한다. 401``Unauthorizaed407``Proxy Authentication Required와는 다르게, 해당 사용자에 대한 인증은 불가능하다.

WWW-Authenticate와 Proxy-Authenticate 헤더

  • 이 응답 헤더들은 자원에 대한 액세스를 얻기 위해 사용되어야 할 인증 방법을 정의한다.
  • 이들은 인증을 하려는 클라이언트가 인증 정보를 제공할 방법을 알기 위해, 어떤 인증 스킴 이 사용될 것인지를 구체적으로 적어야 한다.
WWW-Authenticate: <type> realm=<realm>
Proxy-Authenticate: <type> realm=<realm>
  • <type> : 인증 스킴(Scheme)
  • realm : 보호되는 영역을 설명하거나 보호의 범위를 알리는데 사용된다. 이는 어떤 공간에 사용자가 접근하려고 시도하는지를 알리기 위하여, “중간 단계의 사이트에 대한 접근”과 같거나 또는 비슷한 메시지가 될 수 있다.

인증 스킴

일반적인 HTTP 인증 프레임워크는 여러 인증 스킴에 의해 사용된다. 스킴은 보안 강도와 클라이언트 또는 서버 소프트웨어에서 사용 가능성에 따라 달라질 수 있다.

  • 일반적인 인증 스킴 목록
  1. Basic (base64-encoded credentials)
    • 이는 base64를 이용하여 인코딩된 사용자 ID/비밀번호 쌍의 인증 정보를 전달한다.
    • 사용자 ID와 비밀번호가 평문으로 네트워크를 통해 전달되기 때문에 (base64로 인코딩 되어 있으나, base64는 복호화가 가능한 인코딩이다.) Basic 인증 스킴은 안전하지 않기 때문에 HTTPS/TLS와 함께 사용해야 한다. 이러한 추가적인 보안상의 향상 없이는 민감하거나 귀중한 정보를 보호하는 데 사용되어서는 안된다.
  2. Bearer (bearer tokens to access OAuth 2.0-protected resources)
    • OAuth: Bearer를 이용한 토큰 기반인증의 공개 표준 프로토콜
  3. Digest
  4. HOBA
  5. Mutual
  6. AWS4-HMAC-SHA256

'기타' 카테고리의 다른 글

[컴퓨터구조] 프로세서와 스레드  (0) 2022.09.26
[후기] 프밍 챌린지 1기 후기  (0) 2022.05.17