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란 자바스크립트 비동기 로직 처리에 사용되는 객체이다.
'개발 개념 > 이론' 카테고리의 다른 글
[개발 개념] 메모리 기반 NoSQL Redis (0) | 2022.04.11 |
---|---|
[개발 개념] Node.js 란, React를 사용해야하는 이유 (0) | 2022.04.07 |
[개발 개념] R 언어 기본 (0) | 2022.03.11 |
[R] R 언어 기본 (0) | 2022.03.11 |
[개발 개념] 스프링 프레임워크 이해 (0) | 2022.03.08 |
댓글