💐 Spring/Spring Security

7. JWT를 이해하기 전 Basic, Bearer 방식

iseunghan 2021. 10. 31. 23:08
반응형

이 포스트는 데어 프로그래밍님의 유튜브 강의를 듣고 나서 정리한 글입니다.

 

Token 인증 방식

  • 세션을 사용했을 때의 서버에 두는 세션 저장소, 또 여러 서버일 때의 처리해야 할 문제들을 한방에 해결할 수 있습니다.
  • 쿠키를 사용하지 않아도 되므로 쿠키를 탈취 당했을 때의 보안 취약점들도 사라지게 됩니다.
  • 서버가 여러 대 이어도 Secret_key 값만 알고 있으면 토큰을 Valid 할 수 있습니다.

 

Session은 동일 도메인에서만..

  • 만일 동일 도메인에서의 요청이 아니라면, 쿠키가 안 날라간다! (서버에서 쿠키를 거부!)
  • 그렇다면, javascript에서 Ajax로 헤더에 쿠키를 강제로 담아서 보낼 수가 있는데, 서버에서는 HTTP Only 설정을 통해 외부에서 HTTP 요청이 아닌 javascript 요청이 들어오면 거부되는 설정을 한다.
  • HTTP Only = false로 풀어주면, 외부에서 javascript로 장난을 많이 치기 때문에 true로 설정하는 편이다.

 

Authorization

서버로 요청을 보낼 때, 요청 헤더에 Authorization : <type> <credentials> 을 담아서 보냅니다.

type에는 여러가지가 있는데 우리가 알아볼 타입 두 가지를 알아보갰습니다.

 

Basic

사용자 ID와 PW를 Base64로 인코딩한 값을 토큰으로 사용한다. (RFC 7617)

  • Basic 토큰 값이 노출이 되면 ID, PW가 노출되는 것이기 때문에 보안에 취약하다.

 

Bearer

일반적으로 JWT(RFC 7519) 같은 OAuth 토큰을 사용한다. (RFC 6750)

  • Basic 방식과는 달리 토큰에 ID, PW 값을 넣지 않는다.
  • 로그인 시 토큰을 부여받고, 이후 요청할 때 요청 헤더에 토큰을 실어서 보낸다.
  • 세션 저장소가 필요가 없고, 토큰 자체에 내장이 되어있다.
  • STATELESS, 무결성, 보안성이 장점
반응형