Daramu
Home
  • 분류 전체보기 (109)
    • 네트워크 (15)
    • 클라우드 (23)
      • AWS (5)
      • Docker (2)
      • Kubernetes (4)
      • Istio (1)
      • Terraform (1)
      • fluent bit (4)
      • NCP (6)
    • 잡소리 (0)
    • 개발 (37)
      • 스프링 시큐리티(Security) (2)
      • 스프링 WebFlux (5)
      • Spring boot (11)
      • KeyCloak (9)
      • Frontend (6)
      • golang (4)
      • 기타 (0)
    • DevOps (17)
      • Kafka (4)
      • ArgoCD (5)
      • Jenkins (3)
      • Gitlab (5)
    • Devloper (4)
      • 자바JAVA (4)
    • Monitoring (11)
      • Prometheus+Grafana (2)
      • LGTM + Otel (3)
      • VictoriaMetrics Stack (6)
Home
  • 분류 전체보기 (109)
    • 네트워크 (15)
    • 클라우드 (23)
      • AWS (5)
      • Docker (2)
      • Kubernetes (4)
      • Istio (1)
      • Terraform (1)
      • fluent bit (4)
      • NCP (6)
    • 잡소리 (0)
    • 개발 (37)
      • 스프링 시큐리티(Security) (2)
      • 스프링 WebFlux (5)
      • Spring boot (11)
      • KeyCloak (9)
      • Frontend (6)
      • golang (4)
      • 기타 (0)
    • DevOps (17)
      • Kafka (4)
      • ArgoCD (5)
      • Jenkins (3)
      • Gitlab (5)
    • Devloper (4)
      • 자바JAVA (4)
    • Monitoring (11)
      • Prometheus+Grafana (2)
      • LGTM + Otel (3)
      • VictoriaMetrics Stack (6)
블로그 내 검색

Daramu

다람어의 블로그

  • 개발/Spring boot

    Keycloak, React, Spring Boot 연동: Notification 서비스 생성

    2026. 6. 6.

    by. Daramu

    코드:https://github.com/Yoo-mingi/blog_Boilerplate/tree/main/backend/notification

     

    Notification 서비스(도메인)을 생성할 것이다.

    주로 이메일 인증이나, 만약 나중에 추가된다면 안내나 SMS 등도 들어갈 수 있는, 말 그대로 사용자에게 전달하는 모든것이 들어갈 수 있는 도메인이다.

     

    본 포스팅에서는 회원가입시 이메일 인증을 위한 서비스로만 사용하겠다.

     

    의존성은 다음과 같다.

    메일 인증인 이상 회원가입(user-service)가 보낸 요청을 응답해야 함으로 web이 있어야하며,

    메일 서비스 연동을 위한 mail 의존성과 메일 템플릿 제작을 위한 thymleaf 의존성도 추가했다.

     

    그리고 메일 인증에 보통 시간제한이 있는데, 그 구현과 인증코드 자체가 맞는지 보기 위해서는 DB가 필요하기에 postgresql 드라이버와 jpa가 필요하다.

     

    application.yaml 은 마찬가지로 개인설정을 진행하면 된다.

     

    다 동일하지만 이 부분만큼은 각 개인에 맞는 설정이 필요하다.

     

     

    이메일 설정인데, 개인 메일서버가 있다면 상관없지만 대부분의 사람이 없을 것이므로, gmail을 사용할 것이다.

    베스핀 글로벌에서 잘 설명한 글이 있기에 링크 첨부하겠다. https://support.bespinglobal.com/ko/support/solutions/articles/73000545275--gmail-%EC%95%B1-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%EC%83%9D%EC%84%B1%EB%B0%A9%EB%B2%95

     

    나는 daramu 라는 이름으로 생성하며 패스워드 16자리를 받아서, 저기 위에 있는 username에는 이메일주소를, passowrd에는 받은 16자리를 입력했다.

     

    그 외 핵심 로직은 다음과 같다.

     

    POST /verify-request

    requestbody로 VerifyrequestDTO 를 요구하지만, 해당 DTO는 email만 하나 있을 뿐이다.

    이메일을 받아 발송하는 컨트롤러로, 서비스 내부 로직은 다음과 같다.

     

    다음으로 살펴볼 건 POST /verify-confirm 이다.

    발송한 회원가입의 코드에 대한 검증이며, 당연하겠지만 이메일, 코드, 유효기간 까지 고려한 코드가 있따.

    매게변수로 이메일과 코드, 두개를 받는다.

     

    이 모든 과정이 끝났다면 user-service가 POST /api/users/register 를 호출하여 user 스키마와 keycloak 에 데이터를 저장하는 것으로 회원가입 절차가 종료된다.

     

    물론 주기적으로 인증코드 삭제 로직도 있다. 애초에 회원가입 이후에는 사용 안하니, 계속 유지할 이유가 없다.

     

     

    여기서 메일 보내는 템플릿이 있는데, 이건 AI가 다 짜줬다. 스타일링은 젬병이라......

    위치는 resources/templates/email/ 에있다.

     

    코드로는 service 안에 저렇게 위치를 지정함으로 가져가서 쓸 수 있게 설정해 두었다.

     

    저작자표시 (새창열림)

    '개발 > Spring boot' 카테고리의 다른 글

    Spring Boot PROD 운영환경으로 올리기: Gateway 올리기  (0) 2026.06.07
    Keycloak, React, Spring Boot 연동 : 연동 확인  (0) 2026.06.06
    Keycloak, React, Spring Boot 연동: user 서비스 생성  (0) 2026.06.06
    Keycloak, React, Spring Boot 연동: SCG(Spring Cloud Gateway) 생성하기  (1) 2026.06.06
    Keycloak, React, Spring Boot 연동: DB 생성하기  (0) 2026.06.06

    댓글

    관련글

    • Spring Boot PROD 운영환경으로 올리기: Gateway 올리기 2026.06.07
    • Keycloak, React, Spring Boot 연동 : 연동 확인 2026.06.06
    • Keycloak, React, Spring Boot 연동: user 서비스 생성 2026.06.06
    • Keycloak, React, Spring Boot 연동: SCG(Spring Cloud Gateway) 생성하기 2026.06.06
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Designed by Nana
블로그 이미지
Daramu

티스토리툴바