인증(Authentication)
- Authentication은 유저의 identification을 확인하는 절차다.
- 쉽게 설명하면, 유저의 아이디와 비번을 확인하는 절차.
- 인증을 하기 위해선 먼저 유저의 아이디와 비번을 생성할 수 있는 기능도 필요하다.
로그인 절차
- 유저 아이디와 비번 생성
- 유저 비번 암호화 해서 DB에 저장.
- 유저 로그인 -> 아이디와 비밀번호 입력
- 유저가 입력한 비밀번호 암호화 한후 암호화되서 DB에 저정된 유저 비밀번호와 비교.
- 일치하면 로그인 성공
- 로그인 성공하면 access token을 클라이언트에게 전송.
- 유저는 로그인 성공후 다음부터는 access token을 첨부해서 request를 서버에 전송함으로서 매번 로그인 해도 되지 않도록 한다.
Access token 저장
access token은 다음의 3가지 storage중 하나에 저장
- Local storage
지우지않으면 데이터가 삭제되지 않음 , 도메인별 데이터가 저장됨로 브라우저 탭이 달라도 공유가능
사용예시 : 지속적으로 필요한 데이터(ex. 자동 로그인 등), UI 정보들 - Session storage
브라우저탭을 닫으면 데이터 삭제(임시저장), 브라우저 탭별 데이터 저장
사용예시 : 잠깐 동안 필요한 정보 - 예민한 유저 정보 (ex. 은행 사이트), specific한 유저 정보 - Cookie
만료기한이 있는 키-값 저장소(시간제한), http 통신시 cookie가 같이 전달되므로 용량이 작다'
인가(Authorization)
- Authorization은 유저가 요청하는 request를 실행할 수 있는 권한이 있는 유저인가를 확인하는 절차 이다.
- 예를 들어, 해당 유저는 고객 정보를 볼 수 있는 있지만 수정 할 수는 없다 등.
- Authroization도 JWT를 통해서 구현 될 수 있다.
- access token을 통해 해당 유저 정보를 얻을 수 있음으로 해당 유저가 가지고 있는 권한(permission)도 확인 할 수 있다.
Authorization 절차
- Authentication 절차를 통해 access token을 생성한다. access token에는 유저 정보를 확인할 수 있는 정보가 들어가 있어야 한다 (예를 들어 user id).
- 유저가 request를 보낼때 access token을 첨부해서 보낸다.
- 서버에서는 유저가 보낸 access token을 복호화 한다.
- 복호화된 데이터를 통해 user id를 얻는다.
- user id를 사용해서 database에서 해당 유저의 권한(permission)을 확인하다.
- 유저가 충분한 권한을 가지고 있으면 해당 요청을 처리한다.
- 유저가 권한을 가지고 있지 않으면 Unauthorized Response(401) 혹은 다른 에러 코드를 보낸다.
Authorization 구현
access token을 인증하는 과정을 다른 파일에 따로 데코레이터로 구현함으로써, authorization이 필요할 때마다 데코레이터를 import하여 authorization과정을 붙여줄 수 있다.

'Web > backend' 카테고리의 다른 글
Django - select_related() & prefetch_related() (0) | 2020.10.24 |
---|---|
Node.js - introduction (0) | 2020.10.24 |
Django polls 앱 (0) | 2020.10.24 |
HTTP, RESTful API (0) | 2020.10.24 |
Django 기본 개념 (0) | 2020.10.24 |