로그인 방식

kdy·2023년 1월 26일
0

1.세션/쿠키 방식

세션 : 둘 이상의 통신 장치나 컴퓨터와 사용자 간의 대화나 송수신 연결상태, 여기서는 사용자 정보를 저장하는 세션 공간이 존재하며 그 세션공간에는 사용자들의 세션id가 저장되어있음.

쿠키 : 서버에서 발급됀 세션을 통과하기 위한 키 값 아래는 구성요소

1.세션id를 포함한 이용서버의 도메인

2.유저의 브라우저 정보

3.해당쿠키가 사용되는 사이트 정보

4.유효기간

세션/쿠키 기능 흐름

  1. 사용자 id pw를 사용해 로그인
  2. 서버에 저장된 계정 정보와 전송된 정보가 같은지 확인
  3. 사용자에게 현재 사용할 고유 세션 id값을 생성한 후 세션id 서버에 저장 및 세션id를 쿠키에 담음

서버에 저장되는 세션 정보 예시 : 세션아이디->'나는세션id에요': {id: 'test', name:'문건우'}

4.쿠키를 사용자에게 전송.

5.사용자는 서버를 이용할때마다 http요청 헤더에 세션id가 담긴 쿠키를 같이 전송

6.서버에선 쿠키를 받고 저장소의 정보와 동일한지 매칭해본 후 사용자에게 정보 전송

name에 사용자 구분을 위한 정보가 담겨져있다.
장점:

1.사용자의 정보는 서버 내 의 세션저장소에 저장
2.발급된 세션id는 쿠키에 담김
3. 쿠키에 담긴 세선id자체는 서버에 큰 정보가 아니기에 노출돼도 문제가 생기지 않음.
4. 생성된 세션은 만료시간이 존재함.

단점:
1.세션을 서버에 저장해야 하기 때문에 서버 자원을 할당 해야함. ->세션 전용 서버 사용도 가능
2.로그인할때마다 사용자에게 저장된 쿠키만 을 사용한다면 정보 탈취 우려가 있어서 세션 만료일 설정을 잘 해야 함.

2.토큰 인증방식 (jwt)

json web token : 사용자인증에 필요한 정보를 암호화 한 토큰으로서 임의생성 비밀번호임.

세션쿠키와 유사하게 http전송시 token이라는걸 데이터 헤더에 실어서 전송
만료시간이 있으며 만료되면 재생성해야함.

토큰 인증방식 흐름

1.사용자는 로그인 정보 서버에 전송
2.서버는 계정 정보가 옳바른지 확인후 고유id값을 생성
3. 고유id값을 전송데이터에 넣고 서버의 비밀키를 사용해 암호화
4. 암호화 시킨정보를 토대로 "인증"된 토큰으로 만들고 사용자에게 전송
5. 사용자는 받은 토큰을 저장해두고 서버에 요청할때마다 토큰을 전송
6.서버는 토큰을 확인 한 후 요청 정보 제공

장점:

토큰 자체의 정보는 암호화된 문자열이라 복호화시키려면 서버내의 암호키가 필요함.
서버 부하 줄어듦-> 세션방식과 달리 토큰을 영구저장 하지 않기때문에 서버 자원을 덜 사용함.
유저가 긴 시간을 저장하는 쿠키와는 달리 만료기간이 짧기때문에 탈취 우려적음
토큰을 여러 서비스들이 공유함으로서 "인증"된 토큰을 다른 서버의 서비스를 이용하는대도 사용가능.

단점:
서버내의 암호화 키 하나만 있으면 토큰을 복호화에 용의함

3.Oauth 방식

Open Authorization : 공개 인증 이라는뜻. 인증을 위한 표준 프로토콜 방식.

구글 페이스북 같은 대기업에서 제공하는 인증 서버를 통해 회원 정보를 인증하고
"인증" 토큰을 발급 해서 사용자의 권한 확인

1.사용자는 서버에 서비스 요청
2.인증서버[구글,카카오,페이스북 등등]의 사용자 로그인요청
3. 사용자 로그인 후 정보제공 동의 확인
4. 인증서버는 사용자의 이용서버에 인증코드 발급
5. 사용자 이용 서버는 기존에 인증서버에게서 받앗던 자신의 id와 pw 그리고 인증 코드를 사용해 인증 서버에게 전송
6.인증 서버는 확인 후 서버 에게 엑세스 토큰 전송
7. 서버는 토큰을 이용해 인증서버의 정보에 접근
8. 사용자는 인증서버의 정보를 토대로 이용서버에 로그인.

profile
빠르고 정확해야 혈압이 안오른다

0개의 댓글