본문 바로가기
개발 개념/이론

[개발개념] JWT와 AXIOS, SPRING SECURITY 기본개념

by Yikanghee 2022. 4. 2.

JWT 란?

JWT는 JSON Web Token의 약자로 서버와 클라이언트 간 정보를 주고 받을 때 Http 리퀘스트 헤더에 JSON 토큰을 넣은 후 서버는 별도의 인증 과정없이 헤더에 포함되어 있는 JWT 정보를 통해서 인증하고(vs Session), HMAC 알고리즘을 사용하여 비밀키 또는 RSA를 이용한 Public Key/Private Key 쌍으로 서명할 수 있다

JWT 토큰 구성

JWT는 header, payload, signature로 나누어진다

Header는 토큰의 타입과 해시 암호화 알고리즘으로 구성되어 있고, Payload는 토큰에 담을 클레임 (payload에 담는 정보의 한조각, name / value 형태, registered, public, private 형태 ) 정보를 포함하고 있다, Signature에는 secret key를 포함하여 암호화되어 있다

JWT 절차

스프링 시큐리티에서의 JWT 절차

  • 사용자가 아이디 비밀번호로 로그인을 요청함
  • AuthenticationFilter에서 UsernamePasswordAuthenticationToken을 생성하여 AuthenticaionManager에게 전달
  • AuthenticaionManager는 등록된 AuthenticaionProvider(들)을 조회하여 인증을 요구함
  • AuthenticaionProvider는 UserDetailsService를 통해 입력받은 아이디에 대한 사용자 정보를 DB에서 조회함
  • 입력받은 비밀번호를 암호화하여 DB의 비밀번호화 매칭되는 경우 인증이 성공된 UsernameAuthenticationToken을 생성하여 AuthenticaionManager로 반환함
  • AuthenticaionManager는 UsernameAuthenticaionToken을 AuthenticaionFilter로 전달함
  • AuthenticationFilter는 전달받은 UsernameAuthenticationToken을 LoginSuccessHandler로 전송하고, 토큰을 response의 헤더에 추가하여 반환함

Axios

  • Axios
    • 비동기 방식으로 HTTP 데이터 요청을 실행
    • 직접적으로 XMLHttpRequest를 다루지 않고 Ajax를 호출해서 사용
    • Axios의 리턴 값은 Promise 객체 형식
  • Ajax란 Asynchronous Javascript And Xml(비동기식 자바스크립트와 xml)의 약자로 XMLHttpRequest객체를 이용해서 데이터를 로드하는 기법
  • XMLHttpRequest란 웹 브라우저와 서버 사이의 메소드를 통해 데이터를 전송하는 객체 형식의 API
  • Promise란 자바스크립트 비동기 로직 처리에 사용되는 객체이다.

댓글