1. 커스텀 어노테이션이 필요한 이유 1.1 사용자 식별 정보 추출 커스텀 어노테이션을 사용하는 이유 JWT 토큰 인증 후 토큰에 있는 정보를 가지고 member의 정보(id, email 등)을 추출하는 로직이 필요한데, 컨트롤러에서 항상 파라미터로 인증 정보를 전달받아서 식별 정보를 추출하는 코드를 계속 작성하는 것은 중복된 코드를 계속 작성하는 불필요한 작업이기 때문에 깔끔하게 어노테이션 하나로 선언적으로 표현하기 위해서 커스텀 어노테이션 사용 2. @AuthMember 어노테이션 선언 @Retention(RetentionPolicy.RUNTIME)@Target(ElementType.PARAMETER)@Parameter(hidden = true)public @interface AuthMember {}..
1. 카카오페이 단건결제 API 1.1 KakaoPay Developer 애플리케이션 등록 카카오페이 단건결제 API를 사용하기에 앞서 KakaoPay Developers에서 애플리케이션 등록이 필요 테스트용으로서 Secret key(dev) 사용 1.2 단건 결제 API 출처 : https://developers.kakaopay.com/docs/payment/online/single-payment 실제 사업자 등록이 필요한 실제 결제가 아니기 때문에 테스트 결제를 이용 단건 결제의 구현 순서는 1. 결제 준비하기, 2. 결제 요청 - 사용자 결제 수단 선택, 3. 결제 승인하기 순으로 이루어짐 결제 준비하기 결제 요청 - 사용자 결제 수단 선택 결제 승인 2. 단건 결제 구현하기 2.1 기본값 설정..
1. SSE 개념 참고 : https://velog.io/@wellbeing-dough/Spring-Boot-SSE-알림-개발 1.1 SSE(Server-Sent-Events) 방식SSE는 서버와 한번 연결을 맺고 나면, 일정 시간 동안 서버에서 변경이 발생할 때마다 서버에서 클라이언트로 데이터를 전송하는 방법클라이언트는 서버를 구독(SSE Connection을 맺음)서버는 변동사항이 생길 때마다 구독한 클라이언트들에게 데이터를 전송 SSE는 서버에서 클라이언트로 text message를 보내는 브라우저 기반 웹 애플리케이션 기술이며 HTTP의 persistent connections을 기반으로 하는 HTML5 표준 기술 💡 클라이언트가 서버와 크게 통신할 필요가 없는 경우와 단지 업데이트된 데이터만 ..
1. 커스텀 어노테이션 도입 모든 API에서 동일한 코드가 반복되는걸 막기 위해, 커스텀 어노테이션을 만들어서 파라미터에서 사용자 정보 또는 토큰 정보를 가져올 수 있도록 하는 방법 2. Argument Resolver 2.1 Argument Resolver란? Argument Resolver는 API 엔드포인트로 인입된 데이터를 가공 및 바인딩 할 때 사용하는 객체 http body 또는 url parameter로 넘어오는 데이터들은, @ReqeustBody와@RequestParam 등으로 바인딩이 가능하지만, http header, 쿠키, 세션 등으로 전달되는 데이터인 경우에는 Argument Resolver를 이용할 수 있음. 💡 Argument Resolver는 대표적으로 세션에서 로그인한 사용..
1. Refresh 토큰 저장 방식 Refresh Token은 Access Token을 재발급하기 위한 용도 Refresh Token을 쿠키에 저장하면 오히려 보안성만 떨어뜨리는 행위가 됩니다. 쿠키는 CSRF 공격에 취약하다는 점을 가지고 있어 좋지 않은 방법이라고 결론을 내렸습니다. 마찬가지로 Refresh Token을 세션 스토리지에 저장하는 것도 XSS 공격의 취약성을 가지고 있습니다. 따라서 Refresh Token을 Redis에 저장하는 방식을 채택했습니다.출처 : https://byungil.tistory.com/309 1.1 Redis 저장 방식의 장점 Key - Value 방식, 인메모리 DB 방식으로 빠르게 접근할 수 있음.브라우저에 비해 탈취 가능성이 낮다고 생각하는 redis 서버에..
1. JWT JWT 개념 | Notion1. JWTchanmin-study-log.notion.site 1.1 application.yml, build.gradle 설정하기 jwt: secret: ${JWT_SECRET_KEY} access-token-validity: ${JWT_ACCESS_TOKEN_TIME} refresh-token-validity: ${JWT_REFRESH_TOKEN_TIME} secret key와, 액세스 토큰 만료시간, 리프레시 토큰 만료 시간을 yml에 지정 secret key 값은 중요한 정보이니만큼 github로 관리하지 않고, 별도로 다른 파일에 설정해 주는 것이 좋음 # jwt build.gradleimplementation 'io.jsonwebtoken:jj..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.