분류 전체보기(76)
-
[Spring Security] JWT을 이용한 소셜 로그인 구현
JWT이란? Json Web Token의 약자로서 암호화된 데이터를 전송하기 위한 Json 기반의 인터넷 표준이다. 유저 인증시 사용하는 토큰으로, 유저의 인증 정보를 서버가 아닌 클라이언트가 들고 있기 때문에 서버의 부담을 덜 수 있다. 서버는 유저 요청시 토큰이 유효한지만 판별하면 된다. JWT을 쓰는 이유? 이전 포스팅에서 다룬 Session-Cookie 인증 방식은 다음과 같은 단점이 있다. 휘발성 메모리 영역에 저장된다. 세션은 결국 메모리 위에서 동작하기 때문에 만에 하나 서버가 종료되면 세션이 초기화되고 모든 유저는 다시 로그인해야한다. 분산 서버 환경에서 문제가 될 수 있다. 분산 서버 환경에선 서버의 상태를 stateless하게 설계해야하는데 세션&쿠키 인증 방식은 필연적으로 서버가 유저..
2023.02.01 -
[Spring Security] 소셜 로그인 구현하기(OAuth2.0, naver)
OAuth란? OAuth는 유저가 따로 아이디나 비밀번호를 제공하지 않고 구글이나 네이버, 페이스북 같은 타사 인증을 대신 사용하는 표준화한 인증방식이다. OAuth를 왜 쓸까? 과거 제공사별로 상이했던 인증 절차를 OAuth 프로토콜로 표준화함 유저 인증은 타사에 맡기고 AccessToken만 받아서 개인 정보를 받아서 사용함(개인 정보를 DB로 관리하지 않아도 됌) 유저가 별도의 아이디나 비밀번호를 기억할 필요 없음 유저의 가입 부담을 줄여줌(주로 스타트업 서비스에서 유저의 진입 장벽을 낮춰줌) OAuth Flow 클라이언트가 인증 서버에 Authorization Code 요청 Authorization Code 반환 Authorization Code 로 토큰 서버에 Access Token 요청 Acc..
2023.01.16 -
[Spring Security] 웹사이트 자체 로그인 구현하기
Spring Security는 애플리케이션에 대한 인증, 권한 부여 등의 보안 기능을 제공하는 java 프레임워크다. 다음과 같은 이유로 Spring Security를 사용해보았다. 대략적인 애플리케이션 수준의 보안 아키텍처를 검증된 프레임워크인 Spring Security를 통해서 간접 학습 OAuth2.0 이나 JWT 같은 기술에 대한 라이브러리를 포함하고 있어서 개발 비용 절약 ioc 컨테이너를 이용하여 외부 리소스와 비즈니스 로직 분리 Spring Security란? 애플리케이션에 대한 인증, 권한 부여 등의 보안 기능을 제공하는 프레임워크다. spring security는 다음과 같은 특징을 가진다. 세션-쿠키 인증 방식을 지원한다. 서버는 세션 저장소에 유저에 대한 정보를 저장하고 클라이언트는..
2023.01.12 -
[Java] CentOS 환경에서 Java 설치
yum 업데이트 $ yum update java 설치 JRE와 JDK는 별도의 패키지이다 java-버전-openjdk는 JRE java-버전-openjdk-devel은 JDK JDK안에 JRE가 포함되있으므로 JDK를 받자 JRE 설치 확인 $ java -version $ yum list installed java*openjdk JDK 설치 확인 $ javac -version $ yum list installed java*jdk-devel 설치할 JDK 찾기 $ yum list java*jdk-devel JDK 설치 $ yum install java-X.X.X-openjdk-devel.x86_64 $JAVA_HOME 환경변수 설정 $JAVA_HOME 환경 변수에 사용할 JDK의 경로를 담는다 $JAVA_..
2022.04.19 -
[Jenkins] CentOS 원격 서버 / Local MacOS 환경에서 Jenkins 설치하기
Jenkins란? CI/CD를 제공하는 Tool CI/CD란? CI/CD는 빌드, 테스트, 배포 프로세스를 자동화하여 소프트웨어 품질과 개발 생산성을 높이는 것을 말함 Continuous Integration(CI) 지속적인 통합 Continuous Delivery(CD) 지속적인 배포 왜 Jenkins를 사용할까? Jenkins가 등장하기 전에는 일정 시간마다 개발자가 직접 빌드를 하는 비용이 존재했다(Nightly Build라고 함) Jenkins는 Git과 연동하여 소스 커밋이 감지되면 자동으로 테스트와 빌드, 배포를 진행하여 개발 생산성을 높일 수 있다 Jenkins는 오픈소스여서 다양한 플러그인을 지원한다 Jenkins 설치 전제 조건 최소 256 MB RAM, 1GB Drive Space 필요..
2022.04.05 -
[DDD] Chap 06 응용 영역과 표현 영역
이번 장에선 사용자와 도메인을 연결해주는 매개체인 표현 영역과 응용 영역을 다뤄보겠습니다. 표현 영역 HTTP 요청 해석 같은 사용자와 긴밀히 상호작용하는 영역입니다. 표현 영역의 주요 기능은 다음과 같습니다. URL, 파라미터, 쿠키, 헤더 정보로 사용자가 어떤 기능을 실행하고 싶어하는지 판별 후 응용 서비스를 실행 응용 서비스가 요구하는 형식에 맞게 데이터를 파싱 또는 사용자에 알맞은 형식(HTML, JSON, XML 등)으로 응답 응용 영역(응용 서비스) 실제 기능을 제공하고 실행 결과를 표현 영역에 전달하는 영역입니다. 응용 영역의 주요 기능은 다음과 같습니다. 표현 영역과 도메인 영역을 연결해주는 Facade 역할(흐름 제어) 트랜잭션으로 도메인 상태 변경 관리(일관성 유지) 접근 제어와 이벤트..
2021.09.21