인증과 인가에 대해 알아보자.
인증 (Authentication)
Server로 하여금 현재 Request를 보내는 자가 누구인지를 식별하는 것 입니다.
일반적인 인증 절차
User가 입력한 자격증명 정보(ID, Password)를 Server로 전송 및 인증 요청
Server는 요청과 함께 전달 받은 자격증명 정보를 토대로 Server와 연결된 User 관련 DB를 참조하여 request를 보내는 자가 누구인지 식별
인증 프로세스를 사용자 측에서 본다면, 로그인 부분을 뜻한다고 이해해도 무방합니다.
인증 요소(Factor)의 분류
최근에 인증 프로세스와 관련해서 SFA
, 2FA
, MFA
등의 기술이 등장하고 있는데, 이는 인증 요소의 분류와 관련된 개념입니다.
지식 기반 요소 : 특정인이 알고 있는 정보 를 바탕으로 인증 (비밀번호 등)
- 소유 기반 요소 : 특정인이 소유하고 있는 물건을 바탕으로 인증 (OTP, 휴대폰 인증, 공인인증서 등)
- 속성 기반 요소 : 특정인의 고유 속성을 바탕으로 인증 (지문인식, 홍채인식 등)
초기에는 지식기반이었지만, 최근에는 소유기반을 넘어 속성기반으로의 인증이 점차 흔해지고 있습니다.
이 때, 인증 요소의 갯수가 단일인 경우를 SFA(Single Factor Authentication),
두 가지인 경우를 2FA(Two Factor Authentication)라고 부르며,
새 가지 이상인 경우를 MFA(Multi Factor Authentication)라고 부릅니다.
인가 (Authorization)
인가는 권한 부여가 목적입니다.
즉, 인증(로그인)된 사용자가 자원에 접근 가능한 지 확인하는 과정입니다.
이 과정에서 일반적으로는 인증 결과를 활용하기도 하지만, 필수요건은 아닙니다.
즉, 어떻게 만드느냐에 따라서, Server가 현재 Request를 보내는 사람이 누구인지 전혀 모르더라도 (인증 절차 없이) 권한을 부여하도록 만들 수도 있습니다.
일반적인 인가 절차
User의 접근 권한 요청
요청과 함께 전달 받은 권한의 차등적 부여 관련 정보를 토대로 승인/거부