인증(Authentication)
인증은 유저의 identification을 확인하는 절차이다.
로그인 절차라고 생각하면 될것같다.
로그인 절차
- id 및 password 생성
- password를 암호화해서 DB에 저장 (회원가입)
- 유저가 id 와 password 를 입력 (로그인 시도)
- 유저가 입력한 password를 암호화 한 후 DB에 암호화된 비밀번호와 비교
- 일치하면 로그인 성공
- 로그인을 성공하면 response로 유저에게
access token
을 전송
- 유저는 로그인 성공 후 다음부터는 request를 서버에 전송할때
access token
을 첨부해서 로그인 성공여부를 서버에 알려준다.
JWT(JSON Web Tokens)
위에서 말한 access token을 생성하는 기술 중 하나가 JWT이다.
유저 정보를 담은 JSON 데이터를 암호화해서 주고 받는 방법이다.
인가(Authorization)
인증은 유저의 정보가 일치하는지 판단하는 절차이고,
인가는 유저의 권한을 확인하는 절차이다.
이 과정도 JTW 를 이용해서 권한을 확인하다.
Authorization 절차
- 인증 절차를 통해 access token을 생성하고 받는다.
- 유저가 request를 보낼때 access token을 보낸다.
- 서버에서 유저가 보낸 access token을 복호화해서 그 안에 있는 유저의 정보를 얻는다.
- 유저 정보를 사용해서 DB에서 해당 유저의 권한(permission)을 확인한다.
- 권한을 가지고 있으면 해당 요청을 정상적으로 처리한다.
- 권한이 없으면 에러메세지를 보낸다.