개요
마음에 드는 설명글을 찾지 못해 거의 일주일의 시간을 잡아먹은 Spring Security 6 + JWT 로그인, 로그아웃 기능 구현을 완료했다.
정리가 꼭 필요한 과정인 것 같아 포스팅을 하기로 했다.
이 글은 그 포스팅 중 첫번째 글인 기본 세팅에 대한 설명 글이다.
버전
- Spring boot : 3.3.1
- Spring Security : 6.3.1
- jjwt : 0.11.5
- 설계 방식 : DDD (Domain-Driven Design)
필요한 환경변수 세팅값
1. jwt.accessSecret - 엑세스 토큰 시크릿 키
2. jwt.refreshSecret - 리프레시 토큰 시크릿 키
3. jwt.accessTokenExpire - 엑세스 토큰 만료 시간
4. jwt.refreshTokenExpire - 리프레시 토큰 만료 시간
의존성 설치(gradle)
// spring security
implementation 'org.springframework.boot:spring-boot-starter-security'
// 롬복
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
// jwt
implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.5'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.5'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.5'
// json
implementation 'com.google.code.gson:gson'
// validation
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation', version: '2.5.2'
// postgreSQL
implementation group: 'org.postgresql', name:'postgresql', version: '42.2.19'
파일 구조
/src/main/java/project
├── global
│ ├── config
│ │ └── security
│ │ └── SecurityConfig.java
│ └── entity
│ └── AuditingFields.java
├── jwt
│ ├── entity
│ │ └── Token.java
│ ├── filter
│ │ └── TokenAuthenticationFilter.java
│ ├── infrastructure
│ │ ├── CustomUserDetails.java
│ │ └── JwtAuthenticationToken.java
│ ├── repository
│ │ └── TokenRepository.java
│ ├── service
│ │ ├── CustomUserDetailsService.java
│ │ └── TokenService.java
│ └── util
│ └── JwtTokenizer.java
└── user
├── controller
│ └── UserController.java
├── dto
│ ├── UserJoinDto.java
│ ├── UserLoginDto.java
│ └── UserLoginResponseDto.java
├── entity
│ ├── Authority.java
│ └── User.java
├── repository
│ └── UserRepository.java
└── service
└── UserService.java
다음 글
Spring - Spring Security 6 + JWT 로그인, 로그아웃(2편 - global 파일)
개요Spring Security 6 + JWT 로그인, 로그아웃 과정의 두번째 글인 global 패키지에 대한 글이다.파일 구조/src/main/java/project├── global│ ├── config│ │ └── security│ │ └── SecurityConfig.java│
dev-kimchi.tistory.com
JWT 시크릿 키 생성 방법
JWT - JWT 시크릿 키 생성
개요spring security + jwt 기초 세팅을 하던 중 블로그를 둘러보면 다들 jwt 시크릿 키가 있는데 어디서 만드는 지 몰라 찾아보았다.jwt 공식 사이트에서 만들어주는 건가 했는데 찾아본 결과 그냥 마
dev-kimchi.tistory.com