스프링 시큐리티 이용해서 순조롭게 진행되나 싶었는데 JWT토큰이 발목잡았다.
산 넘어 산이네
내일은 강의 중심으로 공부하다가 느낌 좋으면 더 구현해봐야지
매일 새로운 단축키를 만난다.
단축키 만세
- 단축키
Ctrl Shift +, - 함수접고펴기
Ctrl Alt O 안 쓰는 import정리
- JWT(JSON Web Token)
- JWT는 유저를 인증하고 식별하기 위한 토큰기반 인증이다.
- 토큰은 세션과는 달리 서버가 아닌 클라이언트에 저장되기 때문에 메모리나 스토리지 등을 통해 세션을 관리했던 서버의 부담을 덜 수 있다.
- JWT가 가지는 핵심적인 특징이 있다면, 토큰 자체에 사용자의 권한 정보나 서비스를 사용하기 위한 정보가 포함(Self-Contained)된다는 것이다.
- JWT는 .을 기준으로 헤더(Header) - 내용(Payload) - 서명(Signature)으로 구성되어있다.
JWT는 다음과 같은 순서로 진행된다.
- 클라이언트 사용자가 아이디,패스워드를 통해 웹서비스 인증.
- 서버에서 서명된 JWT를 생성하여 클라이언트에 응답으로 돌려주기
- 클라이언트가 서버에 데이터를 추가적으로 요구할 때 JWT를 HTTP Header에 첨부
- 서버에서 클라이언트로 온 JWT 를 검증
- 전자 서명에는 비대칭 암호화 알고리즘을 사용하므로 암호화를 위한 키와 복호화를 위한 키가 다르다.
- 암호화(전자서명)에는 개인키를, 복호화(검증)에는 공개키를 사용한다.
JWT 장/단점
장점
- 동시 접속자가 많을 때 서버 측 부하 낮춤
- Client, Sever 가 다른 도메인을 사용할 때
- 예) 카카오 OAuth2 로그인 시 JWT Token 사용
단점
- 구현의 복잡도 증가
- JWT 에 담는 내용이 커질 수록 네트워크 비용 증가 (클라이언트 → 서버)
- 기생성된 JWT 를 일부만 만료시킬 방법이 없음
- Secret key 유출 시 JWT 조작 가능
[Spring Boot] JWT (JSON Web Token) 토큰 기반 인증
목차 1. 환경 Spring Boot 2.5.6 (Gradle) JDK 11(Java 11) IntelliJ Postman 2. JWT 클라이언트와 서버, 서비스와 서비스 사이 통신 시 권한 인가(Authorization)를 위해 사용하는 토큰 Bearer Authentication (J..
veneas.tistory.com
- 잔잔바리
정규표현식을 사용했어야 했는데, pattern, matches() 처음써봤다.
- 생성자 생성 어노테이션
@NoArgsConstructor | 파라미터가 없는 기본 생성자를 생성 |
@AllArgsConstructor | 모든 필드 값을 파라미터로 받는 생성자를 만듦 |
@RequiredArgsConstructor | final이나 @NonNull인 필드 값만 파라미터로 받는 생성자 만듦 |
이건 계속 마주칠거같다.
- 내일 할 일
- WIL작성
- 스프링시큐리티, jwt강의 듣기
'TIL' 카테고리의 다른 글
항해99_TIL220530 (JWT) (0) | 2022.05.31 |
---|---|
항해99_WIL220529 (DI, IoC, Bean) (0) | 2022.05.29 |
항해99_TIL220527 (Spring Security란) (0) | 2022.05.28 |
항해99_TIL220526 (제네릭, 스트림, 람다식) (0) | 2022.05.26 |
항해99_TIL220525 (RESTful한 API) (0) | 2022.05.26 |