로그인의 절차를 간단히 기록해보자면
1. Client 에서 아이디와 비밀번호를 Server로 보낸다.
2. Server에서는 지정된 암호화 방식으로 암호화하여 DB의 비밀번호와 비교한다.
3. 유저가 맞다면 AccessToken을 부여해서 Client에게 제공한다.
여기서 AccessToken을 생성하는 방법중 하나가 JWT( Json Web Token) 이다.
JWT는 유저정보를 담은 암호화된 JSON데이터를 Client와 Server가 주고받는것입니다.
쉽게 풀어쓰자면 유저정보를 JSON 형식으로 담아서 암호화하고 그것들을 주고받는것입니다.
JWT에는 해당 유저정보 뿐아니라, 유저가 가지고 있는 권한(permission)도 포함할 수 있다.이를 통해 인가도 가능하다.
다음은 인가 절차이다.
access token을 통해 해당 유저 정보를 얻을 수 있음으로 해당 유저가 가지고 있는 권한(permission)도 확인 할 수 있습니다.
1) 인증 절차를 통해 access token을 생성합니다. access token에는 유저 정보를 확인할 수 있는 정보가 들어가 있어야 합니다 (예를 들어 user id).
2) 유저가 request를 보낼때 access token을 첨부해서 보낸다.
3) 서버에서는 유저가 보낸 access token을 복호화 하고, 복호화된 데이터를 통해 user id를 얻습니다.
4) user id를 사용해서 데이터베이스에 해당 유저의 권한(permission)을 확인합니다.
5-1) 유저가 보낸 요청에 대해서 권한을 가지고 있으면 해당 요청을 처리합니다.
5-2) 유저가 권한을 가지고 있지 않으면 Unauthorized Response(401) 혹은 다른 에러 코드를 보냅니다.
'개발론' 카테고리의 다른 글
TDD in django / model test (0) | 2020.11.17 |
---|---|
GSShop의 개발 변환기 (0) | 2020.11.03 |
인증 / 인가의 차이 (0) | 2020.09.21 |
로그인 에 대하여. (0) | 2020.09.21 |
TDD (Test Driven Development) (0) | 2020.09.15 |