개인 공부를 위해 작성했습니다
인증과 인가는 API에서 가장 자주 구현되는 기능
Authentication은 유저의 identification을 확인하는 절차
유저의 아이디와 비번을 확인하는 절차
access token
을 클라이언트에게 전송access token
을 첨부해서 request를 서버에 전송함으로서 매번 로그인 해도 되지 않도록 한다유저의 비밀번호는 절대 비밀번호 그대로 DB에 저장 하지 않는다
비밀번호 암호에는 단방향 해쉬 함수(one-way hash function)가 일반적으로 쓰인다
다이제스트(digest)
를 생성하는데 단방향성(one-way)
이라고 한다.Salting과 Key Stretching을 구현한 해쉬 함수중 가장 널리 사용되는 것이 bcrypt이다. bcrypt는 처음부터 비밀번호를 단방향 암호화를 하기 위해 만들이진 해쉬함수
access token
이라고 하는 암호화된 유저 정보를 첨부해서 request를 보내게 된다access token
을 복호화 해서 해당 유저 정보를 얻게 된다.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGl0eSI6MSwiaWF0IjoxNDQ0OTE3NjQwLCJuYmYiOjE0NDQ5MTc2NDAsImV4cCI6MTQ0NDkxNzk0MH0.KPmI6WSjRjlpzecPvs3q_T3cJQvAgJvaQAPtk1abC_E
를 복호화 하면 다음과 같은 정보를 얻는다: {
user_id = 1
}
Authorization은 유저가 요청하는 request를 실행할 수 있는 권한이 있는 유저인가를 확인하는 절차
access token
을 통해 해당 유저 정보를 얻을 수 있음으로 해당 유저가 가지고 있는 권한(permission)도 확인 할 수 있다.access token
을 생성한다. access token
에는 유저 정보를 확인할 수 있는 정보가 들어가 있어야 한다 (예를 들어 user id).access token
을 첨부해서 보낸다.access token
을 복호화 한다.✅ 목표!