인증(로그인)을 하기위한 방식?
- 세션 - 쿠키 방식
- 토큰 (jwt 토큰) 방식
- 다른 채널을 통해 인증 (OAuth)
1.세션 - 쿠키 방식
- 해당 방식의 핵심은 사용자의 정보를 세션에 저장하여 서버에서 관리
- 인증 그림 설명
1.클라이언트가 서버로 로그인 요청을 보낸다.
2.서버는 클라이언트가 보낸 (id, pw)를 확인한다.
3.(4 포함) 요청 정보가 유효하면 세션 ID를 생성한다.
4.클라이언트는 응답으로 받은 세션을 쿠키에 저장한다.
5.클라이언트가 인증이 필요한 요청을 할 때마다 헤더에 쿠키 실어서 보낸다.
6.서버는 쿠키를 확인하여 사용자를 식별합니다.
7.사용자에게 맞는 데이터를 넘겨줍니다.
2.토큰 (jwt 토큰) 방식
- JWT(Json Web Token)은 위와 하나의 인터넷 표준 인증 방식입니다. 말그대로 인증에 필요한 정보들을 Token에 담아 암호화시켜 사용하는 토큰.
- 말그대로 인증에 필요한 정보들을 Token에 담아 암호화시켜 사용하는 토큰
- 사실 기본적인 인증을 진행하는 구조는 Cookie때와 크게 다르지는 않음
- JWT는 서명된 토큰이라는 점
인증과정
1.클라이언트 로그인 요청이 들어오면, 서버는 검증 후 클라이언트 고유 ID 등의 정보를 Payload에 담습니다.
2.암호화할 비밀키를 사용해 Access Token(JWT)을 발급합니다.
3.클라이언트는 전달받은 토큰을 저장해두고, 서버에 요청할 때 마다 토큰을 요청 헤더 Authorization에 포함시켜 함께 전달합니다.
4.서버는 토큰의 Signature를 비밀키로 복호화한 다음, 위변조 여부 및 유효 기간 등을 확인합니다.
5.유효한 토큰이라면 요청에 응답합니다.
3. OAuth 2.0 기반 인증 방식