Hello

22. JWT Bearer 인증 방식

by 볼빵빵오춘기

JWT 진행 전 알고 가야할 사항

SecurityConfig.java에서 

.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)

  • STATELESS 방식을 쓴다는 것은 session을 사용x
  • 기본적으로는 web은 STATELESS인데 STATELESS를 stateful 처럼 쓰기위해서 세션, 쿠키를 만드는데 그 방식을 쓰지않겠다고 설정을 하는것이다.

 

.httpBasic().disable()

  • 세션 방식은 다른 서버와 연동 불가
    why? 여러 서버를 가지고 있다면 그 서버마다 담당하는 세션영역이 따로 있고 그 영역이 메모리가 달라서 서로 호환이 안된다.
  • 클라이언트가 js or ajax로 요청을 하게 되면 쿠키의 세션 정책은 동일 도메인에서만 요청해올 때 발동을 한다.http가 아닌 js로는 쿠키를 건드릴 수 없도록 해놓은다. why? js로도 가능하게 해놓으면 장난질을 할 수 있기때문에 보안적으로도 좋지않음
    → js(or ajax)로의 요청은 서버에서는 다 거부한다.
    → js에 쿠키를 강제로 담아서 서버에 요청을 할 수 있는데 요즘 대부분 서버에서는 쿠키를 http only 설정을 해서
  • 쿠키방식을 많이 쓰면 관리하기가 불편하다.

위의 문제로 나온 인증방식이 header에 Authorization이라는 키 값에 인증정보를 넣고가는 방식이 있다.

 

인증 방식

  • Http Basic 방식 : 넣고 가는 값이 id,pw를 넣고가는 방식. 값이 암호화 되어있지 않다.
    ⇒ 중간에 노출이 될 수 있으므로 https 서버를 사용해야 함
  • Token Bearer 방식 : 헤더+페이로드 암호화를 한 고유의 서명 방식. 값이 암호화가 되어있다.
    ⇒ 만약에 노출이 되더라도 암호화가 되어있기 때문에 위험 부담이 적다.

cf. Token Bearer 방식을 쓴다고 해서 http 서버를 사용해도 되는 것인가? 라고 한다면 no 무조건 https를 써야한다.

why? http는 데이터 암호화가 되지않은 프로토콜이고, https는 데이터가 암호화된 프로토콜이기 때문이다.

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기