JWT 토큰이란? → Json 형식으로 된 웹 토큰
JWT의 구조
- 헤더(Header)
- typ: 토큰의 타입 지정(JWT)
- alg : 해싱 알고리즘으로 Verify Signature에서 사용
→ 실질적으로 어떤 알고리즘으로 암호화 할 것인가 결정함
- 내용 또는 정보(Payload)
- 토큰에 담을 정보가 들어 있음
- 담는 정보의 한 조각을 클레임(claim - name과 value의 쌍으로 구성)이라 부름
- 등록된 클레임(registered claim)
- 공개 클레임(public claim)
- 사용자 정의 클레임으로 공개용 정보를 위해 사용(충돌 방지를 위해 URI로 구성)
- 비공개 클레임(private claim)
- 사용자 정의 클레임으로 서버(JWT 발급자)와 클라이언트 사이에 임의로 지정한 정보를 저장, 충돌 우려가 있어 조심해서 사용해야 함
- 서명(Verify Signature)
- Header 인코딩 값과 Payload 인코딩 값을 합쳐서 비밀 키로 해쉬(헤더의 해싱 알고리즘으로)하여 생성
TokenProviderConfigClass
JWT 필터
- JWT 필터는 말 그대로 프론트 컨트롤러 전에 서블릿 컨테이너에서 작동하는 필터를 뜻하는데
사용자가 토큰을 가지고 있는지 1회성으로 검증하는 필터로 사용 → OncePerRequestFilter
- Authorization → 웹에서 사용자의 Reqest Header에 Authorization 속성으로 Token 값을 던지고 관례상 사용자가 던지는 토큰 값 앞에 Bearer 를 붙여서 보냄(표준으로 정의
- 토큰값을 추출할 때 관례상 항상 Bearer가 붙어 있으므로 인덱스7번 부터 값을 추출함