🖤 Key 값 생성 사이트
https://www.devglan.com/online-tools/jasypt-online-encryption-decryption
사용자 경험을 고려하여 엑세스 토큰 기간을 설정하는 것이 좋다.
일단 1시간으로 설정
환경변수 설정하는 법
출처: https://mchch.tistory.com/282
🖤 jwt gradle 설정(spring3)
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'
🖤 굳이 access Key랑 refresh Key를 나눠야 하나 같은 키를 쓰는 거 아닌가
💡 굳이 access Key랑 refresh Key를 나눠야 하나 같
은 키를 쓰는 거 아닌가
아니다, access, refresh token secret 값이 다르기 때문이다
많은 사람들은 시크릿 값을 하나로 했다 즉, access, refresh token key 값을 통일했다 그래도 되나?
키 값을 다르게 하면 보안상 더 좋긴 하지만. 키 값이 해킹당할 확률은 몇 천억분의 일이다. 키 값을 따로 두면 Controller 상에서 키 값이 노출 될 수 있어 (내가 코드를 잘못 짠 걸 수도 있다) 키 값을 통일한다.
💭 키 값 노출 문제 고민
isTokenvalid메소드를 작성하다 흠침했다. to ken을 parse를 하기 위해서는 시크릿 키 값이 필요하다. 그럴려면 refresh랑 access랑 구별하기 위해 파라미터로 받아야 한다. controller 상에서 키값을 service 단으로 넘겨주는 건 안 좋은 것 같다.
⇒
시크릿 키 값 자체가 뺏길 가능성이 낮기 때문에 코드의 복잡성을 해결하기 위해 refresh와 access 시크릿 키 값을 통일해야겠다.
🖤 refreshToken으로 재발급할 때 기존의 남아있던 accesToken과 refreshToken을 어떻게 없애지?
⇒ redis or 관계형 database로 관리
🖤 Redis or 관계형 DataBase?
속도: Redis는 메모리 내 데이터 저장소이므로 읽기 및 쓰기 작업이 매우 빠르다.
내장 만료: Redis에는 키에 TTL을 설정하는 메커니즘이 내장되 있어 토큰 또는 세션으로 자동으로 만료하는데 유용하다.
위 이유로 Redis를 선택했다.
🖤 그렇다면 JWTService에서 시크릿 키 값을 생성을 분리할 수 있다. 그렇다 하더라도 키 책임이랑 토큰책임이랑 분리해야 하는 거아닌가?
키, 토큰 분리 단점:
- 한 눈에 안 들어온다
- 튜머치다. 과도한 객체지향인듯 싶다
키, 토큰 분리 장점:
- 책임을 분리할 수 있다.
=>
분리를 안 하는 것이 유지보수에 좋을 것 같아 분리하지 않겠다
🖤 @Value
💡 yml을 인식하는 어노테이션
import org.springframework.beans.factory.annotation.Value;
요거 임포트 해줘야 함 👿 Lombok 임포트 하는 거아님
🖤 access, refreshToken을 클라이언트에게 보낼 때 어떤 형식으로 보내야 하나?
헤더에 담아야 하나 바디에 담아야 하나
→ 헤더랑 바디의 보안 수준 부터 파악해야겠다
⇒ 보안적인 측면에서는 차이점이 없다
'스프링' 카테고리의 다른 글
@NoArgsConstructor(access = AccessLevel.PROTECTED) 쓰는 이유 (0) | 2024.04.06 |
---|---|
Intellij에서 gradle 버전이 안 보일 때 해결법 (0) | 2024.04.06 |
mysql, gradle 종속성 관리 변경된 점 (0) | 2024.01.31 |
[인가 설정 리팩토링] Security Config -> @PreAuthorize (0) | 2024.01.25 |
Spring Boot로 이메일 인증 API 설계 및 구현: 레디스와 비동기화를 활용한 최적화 (1) | 2024.01.24 |