Spring Security OAuth2구현 OAuth란? OAuth는 Open Authorization, Open Authentication 뜻하는 것으로 자신의 애플리케이션 서버의 데이터로 다른 Third party에게 자원을 공유하거나 대신 유저 인증을 처리해줄 수 있는 오픈 표준 프로토콜이다. OAuth 실 사용 예 간단히 OAuth인증에 대해 실 사용 예를 보자면 웹, 앱들을 사용하면서 네이버 로그인, 카카오 로그인, 페이스북 로그인 등을 한 번쯤은 보았을 것이다. 이것이 바로 OAuth인 증 방식 중 하나이다. 네이버 로그인, 카카오 로그인, 페이스북 로그인 등으로 로그인을 하게 되면 그 애플리케이션들로부터 Access_token이라는 값을 받아 써드파티 애플리케이션에게 준다. Access_t..
OAuth1 란 OAuth는 Open Authorization, Open Authentication 뜻하는 것으로 애플리케이션(페이스북,구글,트위터)(Service Provider)의 유저의 비밀번호를 Third party앱에 제공 없이 인증,인가를 할 수 있는 오픈 스탠다드 프로토콜이다. OAuth 인증을 통해 애플리케이션 API를 유저대신에 접근할 수 있는 권한을 얻을 수 있다. OAuth가 사용되기 전에는 외부 사이트와 인증기반의 데이터를 연동할 때 인증방식의 표준이 없었기 때문에 기존의 기본인증인 아이디와 비밀번호를 사용하였는데, 이는 보안상 취약한 구조였다. 유저의 비밀번호가 노출될 가망성이 크기 때문이다. 그렇기 때문에 이 문제를 보안하기 위해 OAuth의 인증은 API를 제공하는 서버에서 진..
Class Diagram이란? Class Diagram은 UML의 한종류이다. UML은 프로그램 설계를 표현하기 위해 사용하는, 주로 그림으로 된 표기법을 의미한다. 객체지향 언어와 밀접한 관려이 있기에 객체지향 모델링 언어라고도한다. 소프트웨어 시스템, 업무모델링, 시스템의 산출물을 규정하고 문서화하는 언어이고 이 UML종류중 하나가 클래스 다이어그램이다. 클래스 다이어그램은 클래스들간의 관계를 보여주는 구조 다이어그램이다. 특징 클래스 다이어그램은 클래스 내부의 정적인 내용이나 클래스 사이의 관계를 표기하는 다이어그램으로 시스템의 일부 또는 전체의 구조를 나타낼수 있다. 클래스다이어그램은 클래스들의 관계를 쉽게 보고, 의존관계를 쉽게 파악하게 해준다. 클래스간의 관계 아래 그림은 클래스간의 관계를 표..
AspectJ를 사용해서 같은 클래스내에도 새로운 트랜잭션 만들기 스프링에서 트랜잭션을 처리하기 위해서는 일반적인 방법은 Proxy 클래스를 이용해 트랜잭션을 처리하는 것입니다. Spring AOP는 두 가지 Type의 Proxy를 지원하고 있습니다. 그 첫번째는 interface를 이용한 JDK Dynamic Proxy 기능을 이용하는 것이고, 두번째 방법은 CGLIB를 이용해서 서브 클래스를 생성하여 AOP를 구현하는 것입니다. 하지만 두 방법다 내부에서 @Transactional(propagation = Propagation.REQUIRES_NEW) 설정된 메소드를 호출하게 되면 그 전 트랜잭션과 동일한 트랜잭션으로 묶이게 됩니다. 먼저 아래의 소스를 보시겠습니다. @Service public cl..
Spring-AOP, Proxy 란? AOP란 ? AOP는 문제를 해결하기 위한 핵심 관심 사항과 전체에 적용되는 공통 모듈 사항을 기준으로 프로그래밍 함으로써 공통 모듈을 여러 코드에 쉽게 적용할 수 있도록 도와주는 역할을 합니다. AOP를 구현하는 다양한 방법이 존재하지만, 기본적인 개념은 아래 그림과 같이 공통 관심 사항 코드를 비즈니스 로직을 구현한 코드안에 삽입하는 것입니다. 위에 그림에서 공통기능은 직접적으로 호출되지 않습니다. 핵심로직을 구현한 코드를 컴파일하거나, 컴파일된 클래스를 로딩하거나, 또는 로딩한 클래스의 객체를 생성할 때, Proxy객체를 통해 호출할 때 AOP가 적용됩니다. AOP용어 -Joinpoint Advice를 적용 가능한 지점을 의미합니다. 메소드호출, 필드값 변경 등..
서블릿 컨테이너와 스프링 컨테이너 서블릿 컨테이너 서블릿 컨테이너는 개발자가 웹서버와 통신하기 위하여 소켓을 생성하고, 특정 포트에 리스닝하고, 스트림을 생성하는 등의 복잡한 일들을 할 필요가 없게 해준다. 컨테이너는 servlet의 생성부터 소멸까지의 일련의 과정(Lifer Cycle)을 관리한다. 서블릿 컨테이너는 요청이 들어올 때마다 새로운 자바 스레드를 만든다. 우리가 알고 있는 대표적인 Servlet Container가 Tomcat 이다. 톰켓같은 was가 java파일을 컴파일해서 Class로 만들고 메모리에 올려 servlet객체를 만든다. Servlet 동작과정 사용자가 URL을 클릭하면 HTTP Request를 Servlet Container에 보낸다. Servlet Container는 H..
Spring에서 Exception 발생시 Trasaction 처리 주의 자바에서는 총 3개의 Exception이 존재한다. Error, Checked Exception, Unchecked Exception Error 첫째는 java.lang.Error 클래스의 서브 클래스들이다. 에러는 시스템에 뭔가 비정상적인 상황이 발생했을 경우에 사용된다. 주로 VM에서 발생시키는 것이고 애플리케이션 코드에서 잡으려고 하면 안된다. 대부분 컴파일시 발견될 수 있는 예외이다. Checked Exception java.lang.Exception 클래스와 그 아들 클래스로 정의되는 예외들은 에러와 달리 개발자들이 만든 애플리케이션 코드의 작업 중에 예외상황이 발생했을 경우에 사용된다. Exception클래스는 다시 체크 ..
Spring-RememberMe 구현 일반적으로 우리는 브라우저를 닫는순간 세션이 끊기고 브라우저를 다시 켜게되면 로그인을 통해 세션을 연결해준다.하지만 rememberme 기능을 이용하면 브라우저를 열면 자동 로그인을 하게 된다. 일반적으로 브라우저로 쿠키를 보냄으로써 세션에 의해 쿠키가 발견되고 자동적으로 로그인이 일어날것이다. spring security 에서는 2가지방식을 제공한다. 하나는 쿠키기반의 token의 안전을 보호하기위해 hashing 사용, 다른 하나는 스토리지나,데이터베이스에 만들어진 토큰을 저장하여 사용한다. 두개의 구현방식은 Spring security UserDetailsService을 요구한다. 1. Simple Hash-Based Token Approach(Hashing 방..
- Total
- Today
- Yesterday
- Angular
- vue
- Quasar
- network
- #linux
- Linux
- jenkins #mac방화벽
- OS
- SSH
- tobi
- kotlin
- java
- javascript
- aws
- Infra
- batch
- https
- HMAC
- Gradle
- Github
- Jenkins
- Chache
- OAuth
- Spring
- Collection
- IntelliJ
- JPA
- eslint
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |