로그인

Stormi·2022년 6월 24일
0

개발

목록 보기
13/20

클라이언트가 id, pwd를 서버에보내고 서버는 id, pwd로 데이터베이스 값들이랑 비교하면서 맞는 값들인지 확인할 수 있다.
http 프로토콜을 사용해서 통신을 하는데, http는 stateless한 상태이기 때문에 로그인 유지를 위해 쿠키와 세션이 필요하다.
즉, 로그인 유지를 위해
1. 쿠키와세션
2. jwt
3. OAuth

쿠키와 세션

  • 서버에서 클라이언트에게 token, id값을 준다.
    이 id를 session id라고 한다.
    session id는 1,2,3,4,5 , a,b,c,d,e이런 일련번호로 되어 있다.
    클라이언트는 서버에 이 session id를 http헤더에 넣어서 보내면 회원용 api를 다 쓸 수 있게 된다. 세션은 서버의 스토리지 이름이고, 쿠키는 클라이언트의 스토리지 이름이다.

세션 : 서버의 스토리지
쿠키 : 클라이언트의 스토리지

jwt

  • json web token이라고 하고, 클라이언트가 id, pwd를 서버에 보내고 유효하면 이 정보를 바탕으로 token을 만들어서 클라이언트에게 보낸다.
    클라이언트는 이 jwt를 헤더에 넣어서 서버에게 보내면서 회원용 api를 쓸 수 있게 된다. jwt는 payload, 헤더, 시그니처로 이뤄져있는데
    payload에는 사용자의 정보가 있고
    헤더에는 인코딩 방식이있고
    시그니처에는 헤더와 페이로드를 암호화한 값이 담겨져 있다.

payload에는 private하지 않은 값들을 넣는다. 예를 들어 이메일이런 것이 아니라 유저 아이디값을 넣는다.

OAuth

  • 한정된 권한만 주는 것이다. 가장 많이 이용되는 것은 서드파티(third party)이다. 즉, 소셜로그인(카카오 로그인) 같은 곳에서 많이 사용되는 방식이다. 카카오톡 처음 로그인할 때, 아이디 ,비밀번호, 권한 허용 체크를 할 것이다.
    클라이언트가 아이디, 비번, 권한 리스트를 보내주면 서버는 토큰을 발급하고 클라이언트는 api를 사용할 때 그 토큰을 함께 전달해준다. 단점은 보안이 좋은 만큼 복잡한 로직을 갖고있다는 것이다.

0개의 댓글