728x90

분류 전체보기 207

[ Spring Boot ] OAuth2 - Google 소셜 로그인

이어서 Google 소셜 로그인에 대해서 포스팅해보겠습니다. 이전 포스팅에서 구글 클라우드 프로젝트 생성 후 클라이언트 ID , 클라이언트 보안 비밀번호 토큰 값을 생성했습니다. 그렇다면 생성한 프로젝트를 자바에서 어떻게 코드에 넣어서 적용할까?? 먼저 일반적인 절차에 대해서 정리해보겠습니다. Google API Console에서 프로젝트를 생성하고, OAuth2.0 클라이언트 ID를 발급받습니다.(이전 포스팅에서 생성했다.) 백엔드 서버에서 사용자 인증을 처리하기 위해 Spring Security 등의 보안 프레임워크를 설정합니다. 이를 통해 사용자 인증 및 인가를 관리할 수 있습니다. (Security Config 파일에 추가한다.) 로그인 링크를 클릭하면 사용자는 구글 로그인 페이지로 이동하게 됩니..

[ Spring Boot ] OAuth2 - Google Cloud 프로젝트 생성

오늘은 Spring Security에 공부하다가 알게 된 OAuth2 프로토콜의 개념과 Google Cloud 프로젝트를 등록하는 포스팅을 해보겠습니다. OAuth2 란? OAuth 2.0은 웹 및 모바일 애플리케이션에서 사용자 인증 및 인가를 처리하기 위한 개방형 표준 프로토콜입니다. 이 프로토콜은 클라이언트 애플리케이션이 인증 및 인가 서비스 제공자(예: 구글, 페이스북, 트위터)의 리소스에 접근할 수 있는 권한을 얻기 위해 사용됩니다. OAuth 2.0은 다음과 같은 역할을 수행하는 다양한 주제로 구성됩니다. 리소스 소유자(Resource Owner) : 보호된 리소스에 액세스하려는 사용자입니다. 일반적으로 웹 애플리케이션의 엔드 사용자를 의미합니다. 클라이언트(Client) : 리소스 서버에 액세..

[ Concept ] Authentication 객체

시큐리티에 대해서 공부하던 중 Authentication 객체를 사용해서 인증 과정을 알아가고 있습니다. 처음 사용해 보는 객체인 만큼 개념에 대해서 알아두고 메모해두기 위해 포스팅을 해보겠습니다. Authentication 객체란? Authentication 객체는 Spring Security에서 사용되는 인증 정보를 나타내는 객체입니다. 인증은 사용자의 신원을 확인하고 권한을 부여하는 프로세스를 말합니다. Authentication 객체는 인증 과정을 통해 생성되며, 사용자의 자격 증명(예: 사용자 이름과 비밀번호)을 기반으로 신원을 확인합니다. 주요한 구성 요소로는 사용자의 식별 정보, 사용자의 권한 정보 및 기타 인증에 필요한 부가적인 정보가 포함됩니다. 일반적으로 인증 프로세스는 다음과 같은 단..

[ Concept ] 2023.05.31

[ Spring ] Security 개념

Security란? 시큐리티(Security)는 소프트웨어 시스템의 보안과 관련된 개념입니다. 주로 웹 애플리케이션, 모바일 앱, 서버 등에서 사용되며 사용자 인증(Authentication), 권한 부여(Authorization), 데이터 보호 등의 기능을 제공하여 시스템의 안정성과 보안성을 강화합니다. 시큐리티는 다양한 보안 측면을 다루며, 주요한 목표는 다음과 같습니다. 인증(Authentication) : 사용자의 신원을 확인하고 검증하는 과정입니다. 사용자가 자신을 식별할 수 있는 정보(예 : ID , PASSWORD)를 제공하여 인증을 거칩니다. 주로 사용되는 방법으로는 폼 기반 인증, 기본 인증, OAuth,LDAP 등이 있습니다. 권한 부여(Authorization) : 인증된 사용자에 대..

[ Concept ] JSON 이란?

JSON 이란? JSON은 "JavaScript Object Notation"의 약자로, 데이터 교환을 위해 사용되는 경량의 데이터 형식입니다. JSON은 텍스트 형식으로 구성되어 있으며, 사람과 기계 모두가 쉽게 읽고 쓸 수 있어서 주로 웹 애플리케이션에서 데이터를 전송하거나 저장하기 위해 사용됩니다. JSON의 특징은 다음과 같습니다. 서버의 클라이언트 간의 교류에서 일반적으로 많이 사용됩니다. JavaScript 객체 표기법과 아주 유사합니다. JavaScript를 이용하여 JSON 형식의 문서를 쉽게 JavaScript 객체로 변환할 수 있는 이점이 있습니다. JSON 문서 형식은 JavaScript 객체의 형식을 기반으로 만들어졌습니다. 다른 프로그래밍 언어를 이용해서 쉽게 만들 수 있습니다. ..

[ Concept ] 2023.05.27

[ Spring ] Component Scan

Component Scan 컴포넌트 스캔이란 스프링이 스프링 빈(Bean)으로 등록될 준비가 된 클래스들을 스캔하여 빈(Bean)으로 등록해 주는 과정을 말합니다. 지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직접 등록한 빈을 나열했는데, 만약 스프링 빈이 수십, 수백 개가 되면 일일이 등록하기도 귀찮고, 설정 정보도 커지고, 누락하는 문제도 발생합니다. 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공합니다. 또 의존관계도 자동으로 주입하는 @Autowired라는 기능도 제공합니다. 그럼 예제 코드는 AutoAppConfig.java 파일을 생성해서 진행하겠습니다. AutoAppConfig.java pac..

[ Spring ] AOP 개념 및 설정

AOP(Aspect Oriented Programming) AOP(Aspect Oriented Programming)란 풀 네임을 해석하면 관점 지향 프로그래밍으로, 핵심 로직과 부가 기능을 분리하여 애플리케이션 전체에 걸쳐 사용되는 부가 기능을 모듈화 하여 재사용할 수 있도록 지원해 줍니다. 여기서 모듈화란 공통된 로직이나 기능을 하나의 단위로 묶는 것을 의미하며, AOP를 간단하게 해석하기 위해 예를 들자면, 핵심적인 관점은 비즈니스 로직이 될 수 있고, 부가적인 관점은 핵심 로직을 실행하기 위해 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등이 될 수 있습니다. Aspect(측면, 관점, 관심) Aspect는 부가기능을 정의한 코드인 Advice와 해당 Advice를 적용하는 걸 결정하는 Poi..

[ Concept ] 스프링 컨테이너와 스프링 빈

스프링 컨테이너(Spring Container) 스프링 컨테이너는 스프링 프레임워크의 핵심 컴포넌트입니다. 스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공합니다. 스프링에서는 자바 객체를 빈(Bean)이라고 하는데, 스프링 컨테이너에서는 이 빈의 생성부터 소멸까지를 개발자 대신 관래해주는 곳이라고 할 수 있습니다. 더 정확히는 스프링 컨테이너를 부를 때 BeanFactory , ApplicationContext로 구분해서 이야기하는데, BeanFactory를 직접 사용하는 경우는 거의 없으므로 일반적으로 ApplicationContext를 스프링 컨테이너라고 합니다. 위 사진은 스프링 컨테이너가 제공하는 부가기능을 나열한 표입니다. 각 기능은 다음과 같은..

[ Concept ] 2023.05.19

[ Concept ] 좋은 객체 지향 설계의 5가지 원칙 (SOLID)

김영한 님의 스프링 핵심 원리 강의에서 객체 지향 프로그래밍의 5가지 핵심 원칙인 SOLID에 대해서 알려주셔서 제 생각대로 메모해두려고 합니다. SOLID 란? SOLID란 객체 지향 프로그래밍을 하면서 지켜야하는 5대 원칙으로 • SRP: 단일 책임 원칙(single responsibility principle) • OCP: 개방-폐쇄 원칙 (Open/closed principle) • LSP: 리스코프 치환 원칙 (Liskov substitution principle) • ISP: 인터페이스 분리 원칙 (Interface segregation principle) • DIP: 의존관계 역전 원칙 (Dependency inversion principle) 각 원칙의 앞글자를 따서 만들어졌다. SOLID..

[ Concept ] 2023.05.18

[ Concept ] Web Service 개발 방법 및 개념

Web Service Web Service란 World Wide Web(WWW)를 이용한 디바이스와 디바이스 간의 통신 서비스를 의미합니다. 네트워크 상에서 특정한 포트를 열어놓은 서버가 클라이언트의 요청을 받은 다음, HTML, JSON, XML, img 같은 웹 문서를 제공해 줍니다. 요약하자면, 웹 서비스란 네트워크 상에서 서로 다른 종류의 컴퓨터들 간에 상호 작용을 하기 위한 소프트웨어 시스템으로 웹(World Wide Web)이 사람과 컴퓨터 간의 상호 작용을 위한 시스템이라면 웹 서비스는 컴퓨터와 컴퓨터 간의 상호 작용을 위한 시스템입니다. ※ 키워드로 정리 machine과 machine(application - application) 간의 상호작용을 위한 설계 플랫폼의 독립적인 구조 애플리케..

[ Concept ] 2023.05.17
728x90