본문 바로가기

Backend14

[Auth] 구글 로그인 구현(4) - Spring Security 핵심 인터페이스 ✅ Git 기반의 프로젝트 보고서 생성 서비스, Git Check 개발 기록 우선, 인증/인가를 필터단에서 구현하기 위해 Spring Security를 도입하기로 했다.그리고 구글의 OAuth2 플로우를 바탕으로, 다음과 같이 로그인 시퀀스 다이어그램을 짰다. Core Interfaces and Classes :: Spring SecurityOAuth2AuthorizedClientRepository is responsible for persisting OAuth2AuthorizedClient(s) between web requests, whereas the primary role of OAuth2AuthorizedClientService is to manage OAuth2Au.. 2025. 8. 13.
[Auth] 구글 로그인 구현(3) - 구글 OAuth2 플로우 ✅ Git 기반의 프로젝트 보고서 생성 서비스, Git Check 개발 기록 이번에는 구글 OAuth2를 이용하기 위해 어떤 플로우로 구글 인증 서버와 통신이 이루어져야하는지를 확인해보았다. 구글 OAuth2 - Auth Server 플로우 OpenID Connect | Sign in with Google | Google for Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 OpenID Connect 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 인증 및 승인에 Google의 OAuth 2.0developers.google.com 1-2. 로그인 요청 및 CSRF 토큰 생성 (Au.. 2025. 8. 12.
[Auth] 구글 로그인 구현(2) - Spring Security 아키텍처 학습 ✅ Git 기반의 프로젝트 보고서 생성 서비스, Git Check 개발 기록 소셜 로그인을 구현하는 경우, 많은 프로젝트들이 Spring Security를 도입하곤 한다.그래서 Spring Security가 내부적으로 어떻게 동작하는지, 어떤 장점이 있는지를 공식 문서를 통해 먼저 살펴보고자 했다. Dispatcher Servlet과 Filter Dispatcher Servlet은 스프링 MVC의 모든 요청을 받아 처리하는 프론트 컨트롤러 역할을 한다. 필터는 요청/응답 전후로 여러 작업을 수행할 수 있다. - 다운스트림 필터나 서블릿의 실행을 방지- HttpServletRequest나 HttpServletResponse 수정 등 이러한 필터는 서블릿 컨테이너의 라이프 사이클에 속한다. .. 2025. 8. 7.
[Auth] 구글 로그인 구현(1) - 기획 과정 ✅ Git 기반의 프로젝트 보고서 생성 서비스, Git Check 개발 기록 구글 로그인을 택한 이유 여러 프로젝트의 진행 상황을 한 눈에 볼 수 없을까? 1. 최초 기획: GitLab OAuth2.0현재 담당한 업무 상 여러 프로젝트의 진행 상황을 파악하고 있어야 하는 것이 필요했다.그런데 한 두 팀도 아니고 많게는 9~10개의 프로젝트가 동시에 진행되다보니, 하나 하나 파악하는 것만도 큰 일이었다. 하나 하나 레포지토리 들어가서, Repository Graph를 살펴보고, 혹시 이슈가 있을 만한 경우에는 코드레벨까지 살펴보고 ... 팀마다 레포지토리의 사용 컨벤션도 제각각이라 많은 시간이 소모되었다. 그래서 AI를 활용한 프로젝트 보고서 생성 서비스, Git-Check을 기획하게 되었다. 그리.. 2025. 8. 4.
[Redis] LocalDateTime 직렬화/역직렬화 오류 발생 | 오류 내용 (What)  이번 달 출석 기록 히스토리(List)를 Redis에 저장하는 과정에서 직렬화/역직렬화 오류 발생.   | 오류 원인 (Why) LocalDateTime과 같은 Java의 날짜/시간 타입은 Jackson에서 별도의 모듈(JavaTimeModule)을 추가적으로 등록하거나 커스텀 직렬화/역직렬화를 거쳐야만 직렬화/역직렬화가 가능하다. LocalDateTime을 String으로 변환하는 것으로도 직렬화/역직렬화가 가능했겠지만, 확장성과 유지보수성을 고려하여 Redis Config를 수정하였다.  | 코드 상세 설명 (How)@Configurationpublic class RedisConfig { @Bean public RedisConnectionFactory redis.. 2024. 11. 24.
[eclipse] xml파일의 "Downloading external resources is disabled." 오류 해결 발생한 오류 Mybatis-spring을 사용하기 위해 root-context 파일을 작성하는데, "Downloading external resouces is disable" 이라는 오류가 뜨면서 xmlBeanDefinitionStoreException이 발생해 정상적으로 컴파일이 되지 않았다.      오류 원인 우선은 기존 컴퓨터와 작업하던 환경부터 맞췄다. 기존 작업환경에서는 sts-4.21.0 버전은 버그가 있어서 sts-4.22.0버전으로 업데이트 하였기 때문에 버전업부터 했지만 문제는 해결되지 않았다.   그래서 공식홈페이지에서 가져온 링크긴하지만, 혹시나 링크에 오류가 있을까봐 오류가 발생한 링크로 접속이 가능한지 확인차 들어가봤더니 아래 파일이 다운로드 되었다. 즉,  url에 이상이 있는.. 2024. 4. 28.
[Java] 클래스.toString()을 public으로 선언해야 하는 이유 문제 발생 Cannot reduce the visibility of the inherited method from Object 문제 원인 메소드를 오버라이딩 할 때, 접근제한자의 범위를 줄일 수는 없다. Person 클래스에서 public으로 study() 메소드를 선언한 다음, Person을 상속받은 Student 클래스에서 default 접근제어자로 메소드 오버라이딩을 하려고 하자 예외가 발생한다. 그런데 Person클래스에서는 다른 클래스를 extend 하지 않았는데도 toString() 메소드를 default로 선언하면 예외가 발생하게 된다. https://docs.oracle.com/javase/8/docs/api/ Java Platform SE 8 docs.oracle.com 이 내용은 Jav.. 2024. 1. 18.
[Java] ArrayList와 LinkedList의 구현을 통한 성능 비교 JCF (Java Collection Framework)의 List 인터페이스를 구현한 ArrayList와 LinkedList는 순서가 지정된 컬렉션(Sequence)라는 점에서 공통점을 가지고 있다. 또한 List 인터페이스가 제공하는 메서드를 동일하게 수행할 수 있다. 그렇다면 어떤 기준으로 자료구조를 선택해야할까? 기본적으로 알고리즘 분석을 통해서 선택할 수 있다. 주요 메서드를 구현 및 분석해보고, 상황에 따라 적절한 알고리즘을 살펴보자. ArrayList https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html 문서를 기반으로 ArrayList 클래스를 살펴보고, 구현해보자. ArrayList (Java Platform SE 8 ) .. 2023. 11. 25.
[알고리즘] 알고리즘 성능을 분석하는 상환 분석 (Amortized Analysis) 알고리즘의 성능을 분석하기 위해서 시간 복잡도와 공간 복잡도를 중심으로 한 다양한 방법을 활용한다. 최근에는 컴퓨터 성능이 많이 발전함에 따라 공간 복잡도보다는 시간 복잡도의 중요성이 더욱 높아진 만큼, 시간 복잡도를 중심으로 한 알고리즘 성능 분석 방법 중 상환 분석을 중점적으로 살펴보고자 한다. 상환 분석 (Amortized Analysis) 알고리즘의 평균 실행 시간을 계산하는 방법으로, 일반적으로 최악인 경우에는 연산 속도가 느리지만 평균적으로는 연산 속도가 빠른 경우에 사용될 수 있다. 하나의 연산을 수행하는 데 필요한 시간을 전체 연산을 수행할 때의 평균 연산으로 바꾸어 생각한다. 상환 분석을 위해서는 아래의 세가지 기법을 활용할 수 있다. Aggregate Method class MyArra.. 2023. 11. 22.