전체 글 90

Spring Security + JWT + OAuth 활용한 인증/인가 및 궁금점 정리

기존 keycloak을 사용하며 인증 및 인가 처리를 맡기고 있었으나, 이번에 시큐리티와 JWT를 통해 스프링 내에서 자체적으로 인증 및 인가를 적용하는 작업을 하게 되었다. 인증이란?증명. 어느 자원에 대한 요청이 들어왔을때, 요청 대상이 누구인지 확인하는 것. 회원가입 및 로그인된 사용자인지를 확인하는거라 생각하면 된다. 인가란?허락. 어느 자원에 대한 요청이 들어왔을때, 요청 대상이 해당 자원에 대한 접근 권한을 가졌는지 확인하 일이다.예를들어 우리 서비스에서는 비회원(임시 회원) / 회원 / 사업자 회원 / 관리자 등 다양한 Role타입이 있는데, 각 권한별로 요청이 가능한 api 목록이 다르다. 일반 회원인 사용자가 관리자 api를 호출하면 안되듯이, 이러한 인가 작업이 필수적이다.   인증 방..

SpringBoot 2025.03.08

JWT 토큰 관리 방식에 대한 고민 / RTR 방식 도입

운영중인 한 서비스의 팀원이 되어 가장 먼저 회원 기능 로직을 갈아엎게 되었다.기존 Keycloak이라는 오픈소스를 이용해 인증 및 인가를 하고 있었는데 이를 Spring Security + JWT를 이용해 자체적으로 인증 및 인가 로직을 구성하게 되었다. 구상중 JWT 토큰 관리를 어떻게 할지에 대한 논의가 있었고, 즉각적인 로그아웃 처리가 가능하다는 점에서 Redis를 활용한 blacklist 관리 방식을 도입하자는 의견이 있었다.Blacklist에 대한 개념은 대략 다음과 같다.유저가 로그아웃할때, 클라이언트는 로컬/세션 스토리지에 저장되어있던 accessToken을 삭제할것이다.그러나 만약 이 accessToken을 누군가 탈취해서 요청을 보낸다면 서버쪽에서는 해당 토큰이 로그아웃된 사용자의 토큰..

SpringBoot 2025.03.03

Git 레포지토리 미러링하기 (Gitlab -> Github)

프로젝트를 진행하다보니 gitlab에 있는 레포지토리를 깃허브로 미러링해서 가져올일이 있었다프로젝트중에 용량이 큰 파일들이 포함된 레포지토리는 미러링으로 가져오는데 문제가 생길수가 있다git push -mirror를 하고 벌어진 결과는 다음과 같았다 .. 오브젝트 나열하는 중: 10559, 완료.오브젝트 개수 세는 중: 100% (10559/10559), 완료.Delta compression using up to 12 threads오브젝트 압축하는 중: 100% (4545/4545), 완료.오브젝트 쓰는 중: 100% (10559/10559), 742.50 MiB | 97.44 MiB/s, 완료.Total 10559 (delta 4684), reused 10559 (delta 4684), pack-reu..

카테고리 없음 2024.09.02

[Springboot] 개발하면서 생긴 궁금점들 기록(작성중 ..)

(각 질문에 대한 설명을 자세히는 적어두지 않겠다. 기억이 안난다면 다시 찾아보자) 1. Query String과 Path Variable은 각각 언제 쓰면 좋은지? RESTful API 설계 원칙에 따라서 다음과 같이 사용하는게 표준인 모양. 리소스 식별 -> Path Variable 정렬/필터링 -> Query String https://velog.io/@jcinsh/Query-string-path-variable 올바른 URL 설계 : 1) Query string과 Path Variable 이해하기 이 글은 When Should You Use Path Variable and Query Parameter?란 영문글을 한글로 요약 정리한 것입니다. 자세한 내용은 원문을 참고해 주세요.웹에서 특정 데이터..

Backend 2023.12.11

[Backend]sevlet, jsp, session, cookie, mvc 등 정리

서블릿 url 매핑 servlet에서 url 매칭은 클라이언트의 요청이 어떤 서블릿 클래스에 대응되어야 하는지를 결정하는 과정을 나타낸다. uri 매핑을 설정하면 서블릿 컨테이너는 클라이언트의 http요청 url를 분석해 해당 url에 대한 서블릿을 호출한다. 매핑에는 두 방법이 있는데 1. 어노테이션을 통한 설정 서블릿 3.0부터는 java 어노테이션을 사용해 url 매핑을 설정할수 있다. 예시 @WebServlet("/exam") @WebServlet(value="/exam") -> 위 두개는 같은 기능이지만 위에가 좀더 간략하므로 주로 위의 방식을 이용해봤다. @WebServlet(urlPatterns= {"/exam", "/testm"}) -> urlPatterns 속성에 배열로 여러개의 uri ..

Backend 2023.10.03

[Javascript] js 내장객체, 메소드

window 객체 - 웹 브라우저에서 작동하는 js의 최상위 전역객체. Number, setInterval()함수 등이 여기에 포함, BOM(browser object model)로 불리기도 함. alert():브라우저 알림창. confirm(): 브라우저 확인/취소 선택창 prompt():브라우저 입력창 navigator: 브라우저 정보가 내장된 객체. location: 현재 페이지 주소(url)와 관련된 정보 알수있다. - location.href: 값 할당 안하면 현재 url조회, 할당하면 해당 url로 페이지이동. history: 브라우저 페이지 이력 담는 객체. back(), forward() : 브라우저 뒤로/앞으로 가기 open(): 새 창 열기. - window.open(페이지 Url, 창..

Frontend/Javascript 2023.09.18

[Javascript] 기본 문법, 변수 호이스팅, 함수 특성

자바스크립트는 변수 선언시 타입을 명시하지 않고 var 키워드로 선언. 동적 타입의 언어라서 변수 타입 지정없이 값이 할당되는 과정에서 자동으로 변수 타입도 결정된다. 자료 타입에는 크게 원시타입과 객체타입으로 분류 원시타입 : 숫자, 문자열(문자 타입은 없음), boolean, null, undefined, simbol 객체타입: 원시타입을 제외한 모든것들 ( 참고로..자바스크립트에서 typeof로 null을 찍어보면 object라고 나오는데 왜 null이 객체 타입이 아니라 원시타입인거지? 하는 의문을 갖고 검색했는데 초기부터 있었던 오류라고 한다. 이제와서 고치면 위험하기 때문에 놔뒀다고.. 무튼 null은 원시타입!이라네요 ) 다른 특징으로는 숫자를 정수와 실수로 나누어 구분하지 않는데, 특정 소..

Frontend/Javascript 2023.09.17

상속, 오버라이딩, I/O, 생성자, 예외처리 등 복습한거

1. 생성자 /초기화 관련: 객체 생성이 잘 안된다면 해당 클래스에 가서 생성자를 잘 살펴보자. 생성자의 특징으로는 메서드와 형태가 비슷하지만 클래스명과 이름이 동일하고 리턴타입이 없다는 특징. public같은 접근 제한자만 앞에 붙을수있다! 상속받은 클래스라도 생성자를 상속받지는 않는다. 사용자 정의 생성자가 있다면 더이상 기본 생성자가 만들어지지 않으므로, 매개변수가 있는 생성자와 없는 생성자를 둘다 만드려면 둘다 따로 정의해주어야 한다. 2. 오버라이딩 관련: 조상 클래스에서의 메서드와 메서드명, 매개변수 개수/타입/순서, 리턴타입이 같은지?? 접근제한자가 부모 타입에서와 같거나 더 넓은지? 부모보다 더 넓은 범위의 예외를 던지고있진 않은지? 이것들 잘 살피기. 부모 메서드 호출하려면 super.키..

JAVA 2023.08.07

[백준알고리즘] 구현/정렬 - 11651번 좌표 정렬하기2(시간초과 해결)

시간초과났던코드. 아무래도 이 코드에서 구현한 정렬 알고리즘이 시간을 많이 잡아먹은듯 하다(선택정렬은 항상 복잡도가 n^2..) 다시는 선택정렬따위 하지 않겠습니다 N 최대크기가 10만이다..풀기전에 복잡도 계산하는 습관을 좀더 길러야할듯 package Baekjoon_Silver; import java.io.*; import java.util.Arrays; import java.util.StringTokenizer; class Pair{ int x; int y; Pair(int x, int y){ this.x = x; this.y = y; } } public class Bj_11651 { public static void main(String[] args) throws IOException { Buff..

카테고리 없음 2023.07.24