-
[Spring] Spring Security JWT 구현 (2)Code 2024. 12. 12. 00:39
↓ 이 글에서 이어집니다. [Spring] Spring Security JWT 구현 (1)프로젝트 진행 중 필요했던 로그인 기능 구현을 위해 학습한 내용, 구현한 내용을 정리한 글입니다. 🥹 프로젝트 진행에 필요한 정도만 구현하였기 때문에 OAuth 소셜 로그인이나 요런 녀석들은henhen.tistory.com 이전 글에서 구현 방식 개요와 토큰 저장소 관련 세팅, 토큰 관련 서비스를 생성했다. 이어서 회원 서비스에서 편리하게 사용하기 위하여 UserDetails, UserDetailsService를 구현하고, 세팅한 토큰과 서비스에 대해 커스텀 필터를 구현해 준 다음 SecurityConfig를 구성해보려고 한다. 분량이 된다면 회원 기능에서 인증과 연관이 있을 로직 처리까지 작성해 보겠습니다...
-
[Spring] Spring Security JWT 구현 (1)Code 2024. 12. 7. 23:46
프로젝트 진행 중 필요했던 로그인 기능 구현을 위해 학습한 내용, 구현한 내용을 정리한 글입니다. 🥹 프로젝트 진행에 필요한 정도만 구현하였기 때문에 OAuth 소셜 로그인이나 요런 녀석들은 생략했습니다. JWT(JSON Web Token)Header, Payload, Signature로 구성정보를 Base64 URL-safe Encode을 통해 인코딩해 직렬화API 요청 시 JWT를 전달하여 인증, 인가를 진행하는 토큰 인증 방식의 한 종류구현 방식1. 고려 사항모바일로 접속하는 유저풀이 없으며, 비브라우저 환경을 고려하지 않음모든 회원은 관리자 레벨임Access Token, Refresh Token값이 존재하지 않는 경우유효하지 않은 경우(사용자가 일치하지 않는 경우 등)유효시간이 만료된 경우Acc..
-
[Spring] Kafka 채팅 파티션 분산 (3)Code 2024. 11. 11. 17:04
↓ 여기서 이어집니다 Spring, Web Socket, STOMP, MongoDB 환경에서 채팅 구현웹소켓 관련 의존성 추가(build.gradle) implementation 'org.webjars:webjars-locator-core:0.59' implementation 'org.webjars:sockjs-client:1.5.1' implementation 'org.webjars:stomp-websocket:2.3.4' Websocket + STOMP config 구성@Configuration@Enablehenhen.tistory.com 웹소켓 중복 구독, 연결 끊김 문제 해결↓ 여기서 이어집니다 Spring, Web Socket, STOMP, MongoDB 환경에서 채팅 구현웹소켓 관련 의존성 추..
-
[Spring] 채팅 구현 중 웹소켓 중복 구독, 연결 끊김 문제 해결 (2)Code 2024. 11. 3. 18:23
↓ 여기서 이어집니다 Spring, Web Socket, STOMP, MongoDB 환경에서 채팅 구현웹소켓 관련 의존성 추가(build.gradle) implementation 'org.webjars:webjars-locator-core:0.59' implementation 'org.webjars:sockjs-client:1.5.1' implementation 'org.webjars:stomp-websocket:2.3.4' Websocket + STOMP config 구성@Configuration@Enablehenhen.tistory.com 문제frontend채팅 서비스 구현 중 웹소켓을 중복 구독해서 메세지가 이중으로 표시되는 문제페이지 새로고침이나 컴포넌트 이동 시 연결이 끊기는 문제구독 확인 후 ..
-
Kafka 메모Code 2024. 10. 2. 01:06
Kafka 설정역할producer: 메세지를 메세지 브로커의 토픽(Topic)으로 전송, DB에 메세지를 저장consumer: 구독하고 있는 토픽의 메세지를 소비, 즉 현재 서버에 메세지를 받을 사용자에게 웹소켓으로 전송 설치1. kafka 설치2. application.yml 설정spring: kafka: bootstrap-servers: localhost:9092zookeeper: port 2181kafka: port 90923. ProducerConfiguration: ReactiveKafkaProducerTemplate 빈으로 등록ReactiveKafkaProducerTemplate: 메세지 발행하는 과정 추상화 -> Reactor Kafka(KafkaSender)이 메세지 발행Consum..
-
[Spring] Web Socket, STOMP, MongoDB 환경에서 채팅 구현 (1)Code 2024. 9. 26. 17:19
웹소켓 관련 의존성 추가(build.gradle) implementation 'org.webjars:webjars-locator-core:0.59' implementation 'org.webjars:sockjs-client:1.5.1' implementation 'org.webjars:stomp-websocket:2.3.4' Websocket + STOMP config 구성@Configuration@EnableWebSocketMessageBroker@RequiredArgsConstructorpublic class WebSocketConfig implements WebSocketMessageBrokerConfigurer { // WebSocket Stomp로 연결하는 흐름에 대한 제어..
-
Kafka, RedisCode 2024. 9. 17. 15:09
Message Queue메세지 지향 미들웨어(MOM: Message Oriented Middleware)를 구현한 시스템으로 프로세스 간의 데이터를 교환할 때 사용하는 기술이다.message는 endpoint 간 직접적으로 통신하지 않고, 중간의 queue를 통해 중개된다.Producer: 정보를 제공하는 자Consumer: 정보를 제공받아 사용하려는 자Queue: Producer의 데이터를 임시 저장 및 Consumer에 제공 BrokerMessage Brokerpublisher가 생산한 메세지를 message queue에 저장하고, 저장된 데이터를 consumer가 가져갈 수 있도록 중간 다리 역할을 수행한다. pub/sub 구조로서, 대표적으로 Redis, RabbitMQ 소프트웨어, GCP의 pu..
-
[Java] 공공데이터포털 Open API 파싱, JPACode 2024. 8. 8. 00:02
개발 중에 공공데이터포털 Open API 서비스를 연결해서 사용할 일이 있어서 자료 찾아보고 코드 작성한 김에 정리! 아무래도 개인 프로젝트 하거나 하면 종종 활용할 일이 있지 않을까 싶다. 1. 공공데이터포털에서 필요한 Open API 활용 신청 2. 활용 신청하고 정보 확인API 상세 페이지에서 작동하는 인증키(본인은 웹 페이지 내에서는 Decoding, 개발 환경에서는 Encoding 인증키가 작동했다.) 입력하고 실행하면 결과 json 값을 확인할 수 있다.코드목록의 경우 [참고문서 - 코드 정의서]에서 상세 내용을 확인할 수 있다.3. 자료 활용 본인의 경우에는 다음과 같이 활용하였다. 지금은 수동으로 호출해야 하는 상태긴 한데, 후에 배치 작업을 추가하면 좀 더 편하고 실시간으로 내용을 ..
-
[Java] 자주 사용되는 Lombok 어노테이션Code 2024. 6. 22. 19:42
Lombok 자바에서 Getter, Setter, toString과 같은 반복 메소드 작성을 최소화하도록 돕는 라이브러리다. 어노테이션을 부여하는 것만으로 게터세터, 생성자 구현 등이 가능하여 데이터 클래스 작성이 수월해진다. 자주 사용하는 어노테이션@Getter, @Setterprivate로 설정된 클래스 혹은 필드 변수를 외부에서 접근 또는 수정 가능하도록 getter, setter를 자동으로 구현한다.@NoArgsConstructor 기본 생성자를 자동으로 구현한다.@AllArgsConstructor 모든 필드에 대해서 초기화 값을 인수로 하는 생성자를 자동으로 구현한다.@RequiredArgsConstructorfinal 필드에 대해서 초기화 값을 인수로 하는 생성자를 자동으로 구현한다.@T..
-
[Python] deque 자료구조Code 2024. 6. 8. 13:21
덱(deque)는 스택(Stack)과 큐(Queue)의 기능을 모두 가지고 있는 자료 구조이다.즉, 양 끝에서 삽입/삭제가 모두 가능한 자료구조로, 스택과 큐보다는 유연하고 링크드리스트보다는 덜 유연한 자료 구조라고 한다.덱(deque)을 활용하기 위해서는, Collection 모듈이 필요하다. BFS를 구현하는 데 유용하게 활용할 수 있겠다.Collections: list, tuple, set, dict 등 내당 컨테이너에 대한 대안을 제공하는 Python Built-In 확장 모듈from collections import duquefrom collections import OrderedDictfrom collections import defaultdictfrom collections import Co..