전체 카테고리

Spring Security

[Spring] OAuth2.0 Client + JWT 로그인 Unauthorized, AuthenticationEntryPoint 오류 해결

1. 문제 상황JWT 로그인 시에 토큰 인증에 실패한 경우 401 에러를 리턴하기 위해서 AuthenticationEntryPoint 을 구현했다.그런데 localhost:8080/login 에 접속할 때도 Unauthorized 오류가 발생했다. 정말 이게 무슨 상황인가 싶다 ... 분명 잘 됐었는데.. 갑자기 문득 생각나는 이 짤 ..  2. 원인잘 동작하던 친구가 401 에러 처리를 위해 AuthenticationEntryPoint 추가한 후 부터 동작을 하지 않는다. 아래는 내가 작성한 코드이다.2-1. AuthenticationEntryPoint Code@Component@Slf4jpublic class JwtAuthenticationEntryPoint implements Authenticati..

Spring Security

Spring Security, OAuth2.0 Client, JWT 로그인 구현하기 - 2

0. 지난 내용저번 포스트에서 OAuth2.0 Client 의 기능이 뭔지어떻게 OAuth 를 간단하게 구현할 수 있는지 알아 보았다.이번에는 OAuth 로그인 이후의 과정을 알아보자 !  1. 이번 목표저번 포스트에서 OAuth 로그인을 통해 유저 정보를 받아 왔다.이 정보를 이용해서 우리 서버와 계속 통신할 수 있도록 JWT 토큰을 발급해보자 JWT 가 왜 필요한지 간단하게 설명하자면HTTP, HTTP 통신을 기반으로 하는 REST API 는 무상태성 통신을 지향하기 때문에매 요청마다 서버는 클라이언트가 누구인지 알 수 없다.이러한 단점을 해결하고 각 요청마다 요청한 사람이 누구인지 인증하기 위해 JWT, Session 등의 기술을 사용한다. 그 중에서 이번에는 보편적으로 이용되는 JWT 토큰 방식을..

Spring Security

Spring Security, OAuth2.0 Client, JWT 로그인 구현하기 - 1

1. OAuth2.0 이란?OAuth 2.0은 특정 사용자나 시스템이 자신의 자원에 접근할 수 있도록 제한된 권한을 제3의 애플리케이션에 부여하는 방식을 정의한 인증 및 권한 부여 프로토콜입니다.말이 어렵죠 ? 간단한 상황을 예시로 들어보겠습니다.A 라는 Client 가 제가 만들고 있는 출석부 서비스 체쿠리에 인증 요청을 할 때인증을 체쿠리 서버에서 하는 것이 아니라제3의 어플리케이션에게(ex. 카카오톡) 인증 대리를 맡기면인증 완료 후 제3의 어플리케이션으로 부터 체쿠리 서버가 인증 정보를 받게 되는 시스템 입니다. 아래의 카카오톡에서 제공하는 카카오톡 OAuth2 인증 절차를 보시면 더 쉽게 이해가 되실 겁니다. 2. 카카오톡 OAuth2 과정  2-1. 용어 정리이 인증 절차를 설명하기 전에 용어..

체쿠리 프로젝트 성장기

1. API Server v2 개발 시작 !

1.  🗒️ 체쿠리 MVP 버전 배포 후 반 년 반 년을 생각해 보면 모자른 부분이 너무 많았다. 엄밀히 말하면 아내 말고는 다른 사람에게 추천할 수 없을 정도였다.개선해야지 하면서도 현실이 너무 급급해 더 개선하지 못하고 지지부진했다... 기능도 말 그대로 MVP 버전으로 개발했기에 정말 출석체크 '만' 가능한 정도였다.주간 선생님의 스케쥴을 확인한다던가학생의 상세한 출석 통계 및 관리 기능을 개발하지 못했다.그리고 치명적으로 스케쥴을 변경하면 과거 기록이 보이지 않는 문제가 있었다 ... 😭이 부분은 설계의 오류였는데 손보려고 하니 일이 너무 커져서 엄두를 내지 못했다. 이걸 아내, 아내 친구들 그리고 내 지인들에게 써보라고 할 수 있을까 ? 생각하면 부끄러웠다. 그래서 2024년이 두 달 남은 ..

개발 지식

객체지향과 절차지향? 무엇을 선택할까

이 포스트는 인프콘 2024 조영호님의 발포 "객체지향은 여전히 유효한가?" 를 보고 작성한 포스트입니다.    🐳 객체지향은 여전히 유효한가 ?함수형 프로그래밍, 절차지향, 객체지향, 멀티 패러다임 등 여러 프로그래밍 패러다임이 성행하고 있다.그렇다면 아직도 객체지향은 유효할까 ?이 질문에 대해 발표자 조영호 님은 객체지향이 "여전히" 유효한가 보다 "언제" 유효한가에 대해서 고민하는 것이 옳지 않을까라는 대답을 해주셨다.공학에 은탄환은 없기에 선택한 기술의 장단점을 알고 현재 상황에 필요한 것을 올바르게 선택하는 능력이 중요하다는 것이다. 그렇다면 객체지향과 절차지향은 언제 선택하는 것이 좋을까 ? 🐳 객체지향과 절차지향의 차이객체지향의 큰 특징으로 캡슐화와 다형성을 꼽을 수 있을 것이다. 먼저 ..

Node.js

[PrismaORM] upsert 사용 시 Unique constraint failed on the fields 문제 해결

🐳 문제 상황 회사에서 prismaORM 을 사용하고 있다.upsert 기능을 사용해서 데이터를 삽입하는 중에 `Unique constraint failed on the fields` 에러가 발생했다. 근데 생각해보니 도대체 어떻게 Upsert 에서 Unique Constaint 에러가 발생한 걸까 ?데이터가 없다면 삽입하고 Unique Constraint 에 걸리면 업데이트 하는데... 이유를 함께 찾아보지  🐳 가정생각한 가정은 prisma 가 내부적으로 insert into ... on conflict ... do update 와 같은 upsert 기능을 사용하지 않는다는 것이다. 한 번 upsert 쿼리를 호출해 확인해보자 쿼리 실행 결과쿼리 실행 조건 : pk 값인 id를 upsert 의..