전체 글 22

[Spring] Session 인증과 JWT 인증을 이용한 OAuth2 방식의 로그인 구현

스프링 시큐리티막강한 인증(Authentication)과 인가(Authorization 혹은 권한 부여 기능)을 가진 프레임워크스프링 가반 어플리케이션에서의 보안을 위한 표준확장성을 고려한 프레임워크다보니 다양한 요구사항을 손쉽게 추가하고 변경할 수 있음소셜 로그인을 사용하는 이유직접 구현해야할 것이 매우 많음(배보다 배꼽이 커지는 경우), 아래 목록을 소셜 로그인을 제공하는 업체에 위임하여 개발자가 서비스 개발에 집중할 수 있음직접 구현해야하는 목록* 로그인 시 보안* 회원가입 시 이메일 혹은 전화번호 인증* 비밀번호 찾기* 비밀번호 변경* 회원정보 변경 OAuth란?: 제 3의 서비스에 계정 관리를 맡기는 방식 OAuth 방식의 참여자들리소스 오너(Resource Owner): 인증 서버에 자신의 정..

카테고리 없음 2024.10.08

[Panda] 객체지향의 사실과 오해 7장

마틴 파울러가 제시한 객체지향 설계는 세 가지 상호 연관된 관점인 개념 관점, 명세 관점, 구현 관점을 통해 소프트웨어 개발을 바라보는 방식을 제공한다. 각 관점은 동일한 객체를 다른 시각에서 이해하는 방법으로, 설계의 핵심 요소가 된다. 이 글에서는 이 세 가지 관점을 커피 전문점의 예시를 통해 설명하고, 코드와 함께 이를 구체화한다. 1. 개념 관점 (Conceptual Perspective)개념 관점은 도메인에 존재하는 개념과 그 개념들 사이의 관계를 반영하는 데 중점을 둔다. 도메인이란 사용자가 관심을 갖는 특정 주제나 문제 영역을 의미하며, 소프트웨어는 이를 해결하기 위해 개발된다. 이 관점에서는 소프트웨어 객체들이 현실 세계의 개념을 얼마나 잘 반영하느냐가 중요하다.커피 전문점을 예시로 들면,..

[Error] SpringBoot 한글 ?? 깨짐 에러 해결 (mustache 사용)

일단 테스트를 할 때부터 계속 tests failed라고 떠서 봤더니 누가봐도 한글이 깨진 상태였다. import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.boot.test.web.client.TestRestTemplate;import static org.assertj.core.api.Assertions.assertThat;import static org.springframework.boot.test.context.SpringBootT..

Error 2024.10.05

[Spring] Web Service의 인증과 Spring Security

Web Service의 인증웹 인증(Web Authentication)이란 웹 애플리케이션에서 사용자의 정체성 즉 이사람이 누구인지를 확인하고 적절한 권한을 부여하는 과정이다. 따라서 웹 인증의 핵심은 사용자가 누구인지 확인하고 해당 사용자가 액세스하려는 웹 리소스나 서비스에 대한 권한이 있는지 확인하는데 사용된다.  웹 인증은 웹 서비스의 보안성을 높이며 사용자의 데이터에 무단으로 접근하는 것을 방지하기 위한 보안 요소이다.관리자만 접근해야하는 메뉴에 아무나 접근하지 못하도록 하는 것도, A라는 유저의 데이터를 B라는 유저가 접근해서 볼 수 없도록 만드는 것도 웹의 인증과 접근 권한에 해당된다.  Spring Security의 인증과 인가인증과 인가인증: 사용자의 신원을 입증하는 과정, 사용자가 사이트..

개발 2024.09.26

05. 큐란?

01. 큐란?영어 queue는 줄을 의미하는 단어이다.가장 먼저 들어온 것이 가장 먼저 나가는 큐방식으로 넣고 빼는 자료구조를 큐라고 한다.선입선출, FIFO(First-in-First-Out) 방식이라고 부리기도 한다.LIFO 형식인 스택과 비교하면서 공부하는 것이 좋다. front: 큐의 맨 앞에 있는 원소, 제일 먼저 큐에 들어온 원소tail: 큐의 맨 뒤에 있는 원소, 제일 나중에 큐에 들어온 원소큐에서 삽이할 때는 삽입할 원소를 알려주어야하지만 삭제할 때는 단순히 삭제하면 된다.스택에서 삭제는 무조건 최근에 들어간 원소를 대상으로 하기 때문이다. 다음은 필요한 작업들의 명시한 큐의 추상 데이터 타입이다.작업들 중 앞의 3개는 큐의 핵심 작업이고, 뒤에 2개는 거의 모든 자료에 공통으로 들어가는 ..

[Spring] Spring과 SpringBoot의 핵심 개념 정리: IoC/DI, AOP, PSA

스프링과 스프링 부트스프링 Spring Framework엔터프라이즈 애플리케이션: 대규모의 복잡한 데이터를 관리하는 애플리케이션소프트웨어 분야가 발전하며 엔터프라이즈 애플리케이션은 점점 복잡해졌다. 은행 시스템만 생각해보아도 몇백, 몇천만의 사람들이 동시에 많은 서비스를 이용한다. 잔고 조회를 하고, 입금이나 출금 요청을하거나 새로운 통장을 개설하기도 한다.엔터프라이즈 애플리케이션은 많은 사용자의 요청을 동시에 처리해야 하기 때문에 서버 성능과 안정성, 보안이 매우 중요하다. 그러나 서버성능, 안정성, 보안 등을 시켱쓰면서 비즈니스 로직(사이트의 기능)까지 개발하기는 매우 어렵다. 엔터프라이즈 애플리케이션을 위한 개발환경을 제공해서 기능 개발에만 집중할 수 있도록하는 것이 필요했던 상황에서 Spring ..

개발 2024.09.21

[Docker] 도커와 컨테이너화

Docker란 컨테이너를 사용하여 응용 프로그램을 더 쉽게 만들고, 배포하고 실행할 수 있도록 설계된 도구이며 컨테이너 기반의 오픈소스 가상화 플랫폼이다. Docker는 environment disparity라는 문제점을 해결해준다.일반 컨테이너가 물건을 손쉽게 운송해준 것처럼 어플리케이션 환경에 구애받지 않고 어디에서든 손쉽게 배포 관리를 할 수 있게 해주는 것이 컨테이너의 개념이다. (Containerization 즉 컨테이너화 기술은 도커와 도커 컴포즈에서 가장 중요한 개념이다.)컨테이너 기반 배포 방식은 구글을 비롯해 대부분의 서비스 회사가 채택하고 있다.따라서 AWS, Azure, Google Cloud 등 어디서든 실행 가능하다. 도커를 굳이 왜 사용해야할까?서비스가 되고 있는 어플리케이션은 ..

개발 2024.08.11

[Panda] 03. List 리스트

01. 리스트란리스트는 대표적인 자료구조 중 하나로 '줄 세워져 있는 데이터' 또는 '죽 늘어선 데이터'를 의미한다. 리스트를 관리하기 위해 필요한 작업은 다음과 같을 것이다.다음은 리스트가 어떤 작업으로 구성된 자료구조인지를 알려주는 ADT 리스트이다.i번째 자리에 원소 x를 삽입한다.i번째 원소를 삭제한다.원소 x를 삭제한다.원소 x가 몇번째 원소인지 알려준다.리스트의 사이즈(원소의 총 수)를 알려준다.파이썬은 리스트를 기본 자료구조로 제공하여 더 많은 작업을 지원하지만 자바는 언어 자체에서 ㅣ릇트를 기본 자료구조로 제공하지 않고 java.util 패키지에서 제공한다. 리스트의 구현리스트를 구현하는 두 가지 대표적인 방법배열에 원소들을 쭉 배치하는 방법 링크를 이용해 원소들을 연결하는 방법(연결 리스..

[Panda] 02. 자바 기초

01. 클래스자바에서 가장 중요한 용어 중 하나가 클래스이다.클래스는 객체를 만드는 수단이고 객체 지향 언어인 자바는 모든 것이 클래스를 중심으로 구성된다.클래스는 어떤 대상을 추상화하는 의미 단위이기도 하다. 메서드 중에 클래스이름과 동일한 메서드를 생성자라한다.생성자는 해당 클래스의 객체가 하나 만들어질 때 자동으로 수행되어 객체를 초기화하는 역할을 한다.클래스의 필드나 메서드를 선언할 때는 public, private 같은 접근 지정자로 공개범위를 정해주어야한다.객체 지향의 핵심 철학 중 하나가 불필요한 외부 노출은 지양하는 것이므로 접근 지정자를 이요해 필요한 만큼만 클래스 바깥으로 공개하는 것이 좋다. 메서드 중 main() 메서드는 프로그램의 수행을 시작하는 메서드로 제일 먼저 실행된다. 이 ..

[Panda] 01. 자료구조와 시간복잡도

01. 자료구조란?자료구조: 데이터(자료)에 효율적으로 접근하고 수정할 수 있도록 저장, 조직, 관리하는 방법에 관한 이론알고리즘: 문제 해결 작업을 수행하기 위해 입력을 받아 원하는 출력을 만들어내는 과정을 기술한 것 자료구조는 문제 해결에 사용할 부품자료구조는 알고리즘에서 부품 같은 역할을 한다.자료구조를 몰라도 프로그램을 작성할 수 있다. 그러나 자료 구조를 모르고 프로그램을 작성하는 것은 재료의 속성이나 구조물의 구성 방법을 모르고 건축물을 만드는 것이다.자료구조에 대해 잘 이해하고 있어야 적절한 곳에 적절한 코드 사용 및 조합하고 내구성 있는 프로그램을 만들 수 있다. 자료구조를 구현, 사용, 결합하는 과정에서 수학적 사고(특히 이산수학)도 크게 도움된다. 사고가 체계적일 수록 자료구조를 사용한..