목록전체 글 (48)
킴의 레포지토리
이 글은 프로젝트에서 스프링 시큐리티를 사용해서 OAuth 2.0 로그인을 구현한 과정을 담았다. 먼저 OAuth 2.0 프로토콜에 대해서 이해하기 위해서 관련 개념을 정리하고, 검사 도구를 사용해 네이버 OAuth2.0 로그인이 진행되는 과정에서 일어나는 네트워크 통신을 살펴보았다. 그 후, 스프링 시큐리티에서 어떻게 OAuth 2.0 로그인을 지원하는지 관련 클래스 코드들을 분석했다. 마지막으로 프로젝트에 적용하였다.1. OAuth 2.0 프로토콜1-1. OAuth 란?OAuth란 third-party 앱이 접근 제한된 서비스 자원(protected resource)를 사용하기 위해 리소스 소유자(사용자)의 허락을 받아 자원을 사용할 수 있도록 하는 프로토콜이다. 즉, 클라이언트 어플리케이션이 사용자..
1. ThreadLocal과 SecurityContext1-1.ThreadLocal이란?ThreadLocal은 java.lang 패키지에 속하는 클래로 특정 스레드와 관련된 상태를 저장하기 위해 사용된다. 클래스의 private static 필드로 사용되는 경우가 많다. thread는 메모리를 어떻게 공유하고 사용하나threadlocal은 왜사용하는가threadlocal 사용시 주의할점은Spring Security에서 ThreadLocal을 사용하는 이유Spring Security는 기본적으로 ThredLocal을 사용하여 SecurityContext를 저장한다. 아래는 SpringSecurity에서 인증 정보를 저장하기 위해 사용하는 SecurityContextHolder클래스이다. 1.에서 확인할 수..
leetcode에서 278. first bad version 이라는 문제를 풀다가 이 문제가 git 명령어인 git bisect의 구현과 일맥상통한다는 것을 깨달았다. git bisect를 살펴보면 이진 검색이 실제로 어떻게 활용되는지 알 수 있어 이진 검색에 대해 더 깊은 이해가 가능하다.이 글에서는 1. 이진 탐색이 무엇인지 2. git bisect는 어떻게 사용하는지 3. git bisect 내부 구현은 어떻게 되어있을지 first bad version 문제를 통해 추론해보고 마지막으로 4.정리해보자.1. 이진 검색이란이진 검색이란이진 검색은 정렬된 값들 중에서 원하는 값을 찾기 위해 범위를 절반씩 줄여가며 값을 찾아가는 방식이다.숫자가 오름차순으로 정렬된 배열에서 26을 찾는다고 할때 이진 검색으..