슬기로운 개발생활

인증(Authentication)과 인가(Authorization) 알아보기

by coco3o
반응형

인증(Authentication)과 인가(Authorization)의 개념

인증(Authentication)이란?

사용자가 누구인지를 확인 하는 절차를 말한다. (회원가입, 로그인 과정이 대표적인 인증의 예)

회원가입부터 로그인의 과정을 예를 들어 보자.

회원가입 과정
1. 아이디, 비밀번호를 생성한다.

2. 비밀번호를 암호화하여 DB에 저장한다.

로그인 과정
1. 등록된 아이디와 비밀번호를 입력한다.

2. DB에 저장된 사용자의 비밀번호와 입력된 비밀번호가 서로 일치하는지 비교한다.

2-A. 일치하면 로그인한다.
2-B. 일치하지 않으면 로그인에 실패한다.

3. 로그인에 성공하면, Access Token을 클라이언트에 전송한다.

4. 최초 로그인 성공 후, 다음부턴 Access Token을 서버에 요청을 함으로써 매번 로그인 과정 생략가능하다.

 

인가(Authorization)란?

사용자가 요청하는 request를 실행할 수 있는 권한이 있는가를 확인하는 절차이다.

인가의 절차

인가 절차에서도 JWT 기술을 적용해 구현할 수 있다. 

'Access Token'을 통해 해당 사용자 정보를 얻을 수 있으므로 해당 사용자가 가지고 있는 권한도 확인할 수 있다.

JWT 알아보기

1. 인증 절차를 통해, Access Token을 생성한다. 이 토큰은 사용자의 정보를 담은 상태이다. (ex. 사용자 아이디 값)

2. 사용자가 요청을 보낼 때, Access Token을 첨부하여 보낸다.

3. 서버는 해당 Access Token을 Decoded하고, 정보를 얻는다. (Access Token에 담긴 정보)

4. 얻은 정보를 통해 DB에서 사용자 권한을 확인한다.

5-A. 사용자의 권한이 확인되면, 해당 요청을 처리한다.
5-B. 권한이 없다면, 에러코드를 출력한다. (401 Unauthorized 또는 403 Forbidden)

 

정리하면..

사용자는 은행에 가서 자신이 어떤 사람인지 신분증으로 자신을 증명한다. ( 인증; Authentication)

 

은행에서 사용자가 금고를 열어볼 수 있는 사람인지를 판단한다. (인가; Authorization)


참고

반응형

블로그의 정보

슬기로운 개발생활

coco3o

활동하기