Authentication은 유저의 identification을 확인하는 절차(유저의 아이디와 비번을 확인하는 절차). 인증을 하기 위해선 먼저 유저의 아이디와 비번을 생성할 수 있는 기능이 필요
JWT(JSON Web Tokens)
JWT는 말 그대로 유저 정보를 담음 JSON 데이터를 암호화 해서 클라이언트와 서버간에 주고 받는 것
- 유저가 로그인 성공한 후에
acess token
이라고 하는 암호화된 유저정보를 첨부해서 request를 보냄
유저 로그인
POST /auth HTTP/1.1 Host: localhost:5000 Content-Type: application/json { "username": "joe", "password": "pass" // 아이디랑 패스워드 지정 }
const body = { username: "joe", password: "pass" } fetch('http://localhost:5000/auth', { headers: { "Content-Type": "application/json", } body: JSON.stringify(body) }).then(res => res.json()) .then(json => { //console.log(json); // { access_token: "eyJh...." } localStorage.setItem("token", json.access_token) }) fetch('http://localhost:5000/me', { headers: { "Content-Type": "application/json", "Authorization": localStroage.getItem("token") } });
access toten
HTTP/1.1 200 OK Content-Type: application/json { "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGl0eSI6MSwiaWF0IjoxNDQ0OTE3NjQwLCJuYmYiOjE0NDQ5MTc2NDAsImV4cCI6MTQ0NDkxNzk0MH0.KPmI6WSjRjlpzecPvs3q_T3cJQvAgJvaQAPtk1abC_E" }
- 그러면 서버에서
access token
을 복호화해서 해당 유저 정보를 얻게 됨.{ user_id : 1 }
➡️ 이런 절차의 목적은 매번 로그인을 안해도 되게 하는 것
기본 API주소 : http://auth.jaejun.me:10010
(1) /signup(POST)
- header에 key= Content-Type, value= application/json 넣어주고 body - raw -json 형식으로 이메일이랑 패스워드 저장해줌. 그러면 계정 생성됨.
(2) /login(POST)
- 위와 동일하게 지정 => access_token이 생성됨.
(3) /me(GET)
이번에는 header안에 key =Authorization, value= "토큰값" 추가해줌. 그러면 하단에 생성된 계정 확인 가능 (id 값)