웹 인증의 Scheme 종류을 알아보자

인증이 무엇인지는 정리 했고, 이번에는 웹 인증의 Scheme 종류를 알아보도록 하자

인증이 여러 가지 방법이 생기고, 이것 저것 맘대로 사용하는 형태가 많아지니,
웹에 대한 표준을 담당하는 W3C 에서 인증을 위한 표준을 만들었다

이전에 말한 세션 기반 인증을 사용하다가, 현재 많이들 사용하는
토큰 기반 인증이 유행이 되기 전까지 무수히 많은 춘추 세계 인증 시대(?)가 있었다
라고 썰을 풀어본다

인증을 사용하는 방법을 설명하면 HTTP 요청 보낼 때,
Header 에 Authorization 키 값을 사용해서 인증을 한다

#RFC 7235 defines the HTTP authentication framework, which can be used by a server to challenge a client request, and by a client to provide authentication information.

RFC 7235 문서를 살펴보면 인증에 대한 규칙을 자세히 정리해두었다
제목부터 Hypertext Transfer Protocol (HTTP/1.1): Authentication 이다
HTTP Status Code 401 (Unauthorized) 에 대한 내용부터 시작해서, 어떻게 정보를 주고 받을지, 어떤 에러 표현을 응답할지 등등에 대한 규칙이 있다

인증 (Authentication) 하는데, 인가 (Authorization) 를 사용하는 아이러니 함을 개발자는 인식 해야 한다
Authorization: <type> <credentials>

<type> 이라는 곳에다  Authentication Scheme 이라고 하는 (한글로 풀이하면 계획된? 고안된?) 일종의 정해진 문자열(string) 을 넣어야 한다 (약속 했으니까)

Basic
Bearer
Digest
Negotiate / NTLM
Mutual
....

많이들 보고 사용하는 Bearer 는 인증 스킴중에 하나이고, RFC 6570 에 정의되어있다. 이 놈이 토큰 기반 인증에 많이 쓰인다

최근에 개발 이슈로 다른 스킴들에도 관심이 있는데, Authentication 의 Tag로 차근 차근 풀어나가야 할 것 같다
드디어 이 포스팅의 목적인 기본 인증에 대한 부분을 설명하고, 이후에 Bearer 를 이용한 토큰 기반 인증의 공개 표준 프로토콜인 OAuth 를 설명하려고 차근차근 지식을 쌓아 아니 정리하고 있다

References

HTTP authentication - HTTP | MDN
HTTP provides a general framework for access control and authentication. This page is an introduction to the HTTP framework for authentication, and shows how to restrict access to your server using the HTTP “Basic” schema.