[네컷로그] 5. JWT 인증 구조와 Refresh Token 재발급 구현(Redis 기반 토큰 관리)
·
Side Project
이전 글에서는 Spring Security, OAuth2, JWT를 이용해 카카오와 네이버 SNS 로그인 기능을 구현하는 과정을 정리했다.OAuth2 인증이 완료되면 서버는 사용자 정보를 기반으로 JWT 토큰을 발급하고, 이후 API 요청에서는 이 토큰을 이용해 사용자를 인증하도록 구성했다.하지만 실제 서비스에서 JWT 인증을 안정적으로 운영하려면 단순히 토큰을 발급하는 것만으로는 충분하지 않다. JWT는 어떤 구조로 이루어져 있는지Access Token과 Refresh Token을 왜 분리해서 사용하는지Access Token이 만료되면 어떤 방식으로 재발급을 처리하는지같은 인증 흐름까지 함께 설계해야 한다. 이번 글에서는 JWT 인증 구조와 JwtUtil 구현 방식, 그리고 Refresh Token을 ..
[네컷로그] 4. Spring Security + OAuth2 + JWT를 활용한 SNS 로그인 구현(카카오, 네이버)
·
카테고리 없음
프로젝트 기본 세팅을 모두 마친 뒤, 다음으로 구현한 기능은 회원가입/로그인이었다. 네컷로그는 사용자 편의성을 고려해 카카오와 네이버 SNS 로그인만 제공하는 방식으로 설계했다.이에따라 Spring Security, OAuth2를 이용해 소셜 로그인 인증을 처리하고, 로그인 이후에는 JWT를 기반 인증 구조를 적용했다. 이번 글에서는 카카오와 네이버 SNS 로그인을 실제로 구현하면서 정리한 인증 흐름과 구현 방법을 기록해보겠다! Spring Security + OAuth2 + JWT를 같이 사용하는 이유이 세 가지를 같이 사용하면 SNS 로그인 인증과 API 요청 인증을 명확하게 분리하면서도 안정적인 보안 구조를 구축할 수 있다!Spring Security애플리케이션의 인증(Authentication)..
[Java Algorithm] 백준 2178 _ 미로 탐색
·
Study/Algorithm Study
[문제]N×M크기의 배열로 표현되는 미로가 있다.미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다.위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다.입력첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.출력첫째 줄에 지나야 하는 최소의 칸 수를 출력한다. 항상 도착위치로 이동할 ..
[Java Algorithm] 백준 1962 _ 그림
·
Study/Algorithm Study
[문제]어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로로 연결된 것은 연결이 된 것이고 대각선으로 연결이 된 것은 떨어진 그림이다. 그림의 넓이란 그림에 포함된 1의 개수이다.입력첫째 줄에 도화지의 세로 크기 n(1 ≤ n ≤ 500)과 가로 크기 m(1 ≤ m ≤ 500)이 차례로 주어진다. 두 번째 줄부터 n+1 줄 까지 그림의 정보가 주어진다. (단 그림의 정보는 0과 1이 공백을 두고 주어지며, 0은 색칠이 안된 부분, 1은 색칠이 된 부분을 의미한다)출력첫째 줄에는 그림의 개수, 둘째 줄에는 그 중 가장 넓은 그림의 넓이를 출력하여라. 단, 그림이 하..
[코딩테스트 알고리즘] BFS 너비 우선 탐색
·
Study/Algorithm Study
개념BFS는 그래프 탐색의 한 가지 방법더보기* 그래프 탐색이란?어떤 것들이 연속해서 이어질 때, 모두 확인하는 방법Graph = Vertex(정점) + Edge(간선) 그래프 탐색 종류- BFS : Breadth-first search(너비 우선 탐색)- DFS : Depth-first search(깊이 우선 탐색) 아이디어1. 시작점에 연결된 Vertex 찾기2. 찾은 Vertex를 Queue에 저장3. Queue의 가장 먼저 것 뽑아서 반복💡 BFS - Queue / DFS - Stack 시간복잡도BFS = O(V+E)* 시간복잡도 = 알고리즘이 얼마나 오래 걸리는지 자료구조- 검색할 그래프- 방문 여부 확인(재방문 금지)- Queue : BFS 실행 출처 : 개발자 장고 [정리]BFS는 기본적..
백엔드 개발 핵심 3요소 _ 웹 서버, WAS, DB
·
Develop Basic
그동안 개발을 하면서 주어진 기능 구현에만 급급했었다. 코드가 어떻게 실행되고, 어떤 구조 위에서 돌아가는지 깊이 생각해본 적이 없었는데유투브 원투코딩 채널에 백엔드의 가장 기본이 되는 핵심 요소에 대한 영상이 있길래 보면서 정리해봤다. 백엔드 개발을 위해 꼭 알아야 할 전체 구성 [Web Server, WAS, Database] 1. Web Server- 문제 상황: HTML 문서를 어디서든 볼 수 있게 공유할 수 있도록 만들고 싶음- 결과: 정적 파일을 공유할 수 있게 해주는 웹 서버 등장 웹 서버가 하는 일웹 서버는 정적 파일(HTML, CSS, JavaScript, 이미지 등)을 클라이언트에게 전달하는 역할을 한다.사용자가 URL에 접속하면 서버에 저장된 파일을 그대로 내려주는 방식이다. 별도의 ..
[Java Algorithm] 프로그래머스 Lv.2 _ 프로세스
·
Study/Algorithm Study
[문제]운영체제의 역할 중 하나는 컴퓨터 시스템의 자원을 효율적으로 관리하는 것입니다. 이 문제에서는 운영체제가 다음 규칙에 따라 프로세스를 관리할 경우 특정 프로세스가 몇 번째로 실행되는지 알아내면 됩니다.1. 실행 대기 큐(Queue)에서 대기중인 프로세스 하나를 꺼냅니다. 2. 큐에 대기중인 프로세스 중 우선순위가 더 높은 프로세스가 있다면 방금 꺼낸 프로세스를 다시 큐에 넣습니다. 3. 만약 그런 프로세스가 없다면 방금 꺼낸 프로세스를 실행합니다. 3.1 한 번 실행한 프로세스는 다시 큐에 넣지 않고 그대로 종료됩니다.예를 들어 프로세스 4개 [A, B, C, D]가 순서대로 실행 대기 큐에 들어있고, 우선순위가 [2, 1, 3, 2]라면 [C, D, A, B] 순으로 실행하게 됩니다.현재 실행 ..
[Java Algorithm] 프로그래머스 Lv.2 _ 올바른 괄호
·
Study/Algorithm Study
[문제]괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어- "()()" 또는 "(())()" 는 올바른 괄호입니다.- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.제한사항- 문자열 s의 길이 : 100,000 이하의 자연수- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. [Algorithm]열린 괄호인지 닫힌 괄호인지 나눠서 열린 괄호인 경우 +1, 닫힌 괄호인 경우 -1전체 count가 0인 경우 t..