본문 바로가기

SAN의 성장일지193

oauth2-client 라이브러리를 이용하여 OAuth2 구현하기 (Kakao, Github) spring boot에서는 OAuth2.0을 더욱 편리하게 구현할 수 있도록 도와주는 oauth2-client 라는 라이브러리가 존재한다. JDON의 카카오와 깃헙 로그인 기능을 구현하기 위해서 oauth2-client를 사용해보았다. 구현과정 렛츠고 [ 개발환경 ]java 17spring boot 3.3spring security 6.2spring security oauth2 client 6.2 oauth2 clientoauth2 client란 OAuth 2.0 서비스에 대한 인증을 처리하기 위한 모듈로 Spring Boot 프레임워크에서 OAuth 2.0 프로토콜을 사용하여 인증을 수행하는 클라이언트이다.  oauth2-client 를 사용하면 정말 간단하게 소셜 로그인을 뚝딱 구현할 수 있다.  간.. 2024. 6. 19.
01. 생성자 대신 정적 팩터리 메서드를 고려하라. 클래스의 인스턴스를 얻는 전통적인 방법은 public 생성자를 사용하는 것이다. 하지만 이것 말고도 다른 방법이 하나 더 있다. 바로 정적 팩터리 메서드이다. 각자의 장단점을 잘 알고 상황에 알맞은 선택을 하자. 정적 팩토리 메서드, static factory method▷ 클래스의 인스턴스를 반환하는 단순한 static methodpublic static Boolean valueOf (boolean b) { return b ? Boolean.TRUE : Boolean.FALSE;} 정적 팩토리 메서드의 장점1. 반환될 객체의 특성을 설명하는 이름을 가질 수 있다. 생성자와 달리 정적 팩터리 메서드는 임의로 이름을 지을 수 있는데, 이런 특징을 살려 반환할 객체의 특성을 설명하는 이름을 지어 명시적인 코.. 2024. 5. 30.
OAuth2 basic 1. OAuth가 뭔가요OAuth(Open Authorization)는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. 이 매커니즘은 여러 기업들에 의해 사용되는데, 이를테면 아마존, 구글, 페이스북, 마이크로소프트, 트위터가 있으며 사용자들이 타사 애플리케이션이나 웹사이트의 계정에 관한 정보를 공유할 수 있게 허용한다.- wikipedia 요즘은 '카카오톡으로 로그인하기' 'Google로 시작하기' 와 같은 다른 계정을 통해서 회원가입 및 로그인할 수 있는 서비스들이 많다. 타 서비스의 계정을 기반으로한 인증 기능을 사용하면 회원가입 flow나 로그.. 2024. 5. 22.
Session, JWT 회원이 존재하는 서비스를 만들기 위해서는 사용자의 인증 정보를 관리하는 무언가가 필요하다. 흔히 세션을 사용하거나 인증 토큰을 사용해서 관리하게 되는데 오늘은 이 세션과 토큰을 알아보도록 하자. Http 같은 Stateless한 프로토콜에서는 요청간에 연속성이 없어서 서버와 클라이언트가 이전에 주고받았던 요청과 응답에 대한 내용을 계속 기억하고 있을 수가 없다. 이런 상황에서 예를 들어 로그인을 통한 인증 기록이 있어야 서비스의 기능을 사용할 수 있다면 골치가 아파질 것이다. 서비스를 사용하려 클릭을 할 때마다 로그인을 동반해야할 수도 있기 때문이다. 이런 문제점을 해결하기 위해서 매 요청마다 이 클라이언트가 인증을 받은 클라이언트인지 알 수 있는 방법으로 인증 정보를 저장하고 있는 Cookie, Ses.. 2024. 4. 16.
[kernel360] E2E Project 회고 무려 5개월 전, 한 달 동안 했던 다 식어버린 E2E 회고..... 150일 후에 되돌아보기...... 2023.10.24(화) ~ 2023.11.24(금), 5주 Front-End부터 Back-End까지의 구현 기술을 협업으로 경험해 보는 프로젝트로 기획, 설계 개발, 배포까지 구현한다. 웹서비스 전체를 구현하는 것을 목표로 서비스 요청 WAS와 DB를 활용한 처리 서버의 응답을 화면에 보여주기까지 구현하고 이를 배포하도록 한다. Kernel Engine 가입한 유저의 블로그 게시글과 관리자가 등록한 기술 블로그의 게시글을 키워드를 통해서 검색할 수 있는 검색엔진 서비스 운영체제의 그 커널 아니고요.... 커널360의 커널입니다.... 예예...ㅜㅜ 이름 달리 지을걸... 기획의도 운이 좋게도 내가 .. 2024. 4. 4.
[kernel360] 해커톤 회고 boot-up 다음은 해커톤톤 해커톤에서 제시한 목표는 다음과 같다. 최소한의 기술적 완성도를 가진 결과물을 단시간에 만들어 봄으로써 자신의 기술적 실력을 파악하고, 빠른 학습에 대한 경험을 습득한다. 프로젝트를 진행하며 코드의 품질, 기술적 협업 등을 이해하는 것을 목표로 한다. 해커톤은 4일동안 진행되는데 안내사항에 기획적 완성도, 창의성보다 작더라도 하나의 프로젝트를 기술적으로 완성하는 것에 중점을 둔다. 기능이 적게 포함되더라도 완성된 서비스를 구현할 수 있는 주제를 고안한다. 라고 되어있길래 뭘해야 4일 안에 완성할 수 있을까... 그리고 무엇보다 우리는 백엔드만 모여있고 프론트가 없는 상황인데... 라는 것을 고심하다가 작은 tistory 만들기라는 아이디어를 생각했다. 재미없어 보이긴 하지만.. 2023. 11. 1.
[kernel360] boot-up 회고 이번년도 하반기에 시작하게 된 kernel360, 가장 첫번째로 진행하게 된 커리큘럼은 boot-up이라는 프로젝트였다. 내가 생각했을 때 boot-up이라는 프로젝트에서 우리에게 원하는 것은 다음과 같았다. 상황 - 고객의 pain point를 해결해줄 수 있는 서비스를 개발하려고 할 때 이 프로젝트에서 배워야 할 것 1. 기획과 설계의 프로세스 익히기 2. 어떤 협업 도구가 있는지 배우고, 직접 사용해보기 개발을 실제로 하지는 않고 기획과 설계까지만 하기에 3일 정도의 시간동안 진행되는 프로젝트였는데 가장 특이했던 점은 3일차가 시작될 때 팀장을 제외한 팀원들이 모두 새로 바뀐다는 점이었다. 실제로 회사에 갔을 때 다른 사람이 하던 업무를 인수인계 받거나, 내가 하던 업무를 남에게 인수인계 해야하는 .. 2023. 11. 1.
[Inception] 1. 도커 공부하기 도커, 컨테이너 빌드업! 클라우드 컴퓨팅 개요 클라우드는 인프라에 사용되는 서버, 저장소, 데이터베이스, 네트워크, 데이터베이스, 소프트웨어 데이터 분석등을 포함해 사용자가 언제든지 인터넷과 모바일 등을 통해 IT 서비스를 제공받을 수 있도록 하는 컴퓨팅 기술이다. 클라우드 컴퓨팅이란? 인터넷 기술을 사용해서 다수의 사용자에게 하나의 서비스로서 방대한 IT 능력을 제공하는 컴퓨팅 방식 특징 주문형 셀프 서비스 on demand self service 고객이 IT 서비스 제공자의 개입 없이 원하는 시점에 바로 서비스를 이용할 수 있다. 광대역 네트워크 접근 broad network access 각 클라우드 서비스 업체가 제공하는 광대역 네트워크를 이용하여 다양한 클라이언트 플랫폼이 빠르게 접속할 수 있다... 2022. 12. 29.
클래스와 객체 객체 지향 언어의 특성 캡슐화, Encapsulation 객체를 캡슐로 싸서 내부를 보호하고 볼 수 없게 하는 것 객체는 캡슐화가 기본 원칙이지만 외부와의 접속을 위해 몇 부분만 공개 노출한다. 자바에서의 객체는 클래스라는 캡슐화를 사용하며, 필드(멤버 변수)와 메소드(멤버 함수)로 구성된다. 상속, Inheritance 자식 클래스가 부모 클래스의 속성을 물려받고 기능을 추가하여 확장(extends)하는 개념 부모 클래스를 슈퍼 클래스라고 부르고 자식 클래스를 서브 클래스라고 부른다. 상속은 슈퍼 클래스의 필드와 메소드를 물려받아 코드를 재사용함으로써 코드 작성에 드는 시간과 비용을 줄인다. 다형성, Polymorphism 같은 이름의 메소드가 클래스 혹은 객체에 따라 다르게 동작하도록 구현되는 것 동.. 2022. 12. 29.