본문 바로가기

분류 전체보기

(75)
ID Token OAuth 2.0 기반의 인증과 식별 표준 Oauth2.0 으로 사용자 인증을 수행하기 위한 상호 운용 방식을 정의 OpenID 커넥트는 ID 토큰은 서명된 JWT 로서 일시적인 OAuth 액세스 토큰과 함께 클라이언트 애플리케이션에게 전달된다. 액세스 토큰과 달리 ID토큰은 RP 로 보내져 그것의 내용에 파싱된다. RP = Relying Party OP = OpenID Provider access token 처럼 id 토큰에도 인증 세션에 대한 클레임이 포함된다. 즉, 사용자 식별자(sub) 와 토큰을 발급한 이슈 제공자를 위한 식별자 (iss) 그리고 생성된 토큰을 발급받는 클라이언트 식별자(aud) 클레임이 포함된다. 또한 ID 토큰은 토큰 자체의 유효시간 윈도우(exp와 iat 클래임으로) 에 대..
[JPA] 상속관계 전략 (Joined, Single Table, Inheritance) 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 위 Item 을 상속받는 3개의 클래스 Album, Movie, Book 을 상속관계가 없는 관계형 데이터 베이스에 적용 하려면 객체의 상속개념과 가장 유사한 슈퍼타입, 서브타입 관계라는 모델링 기법을 사용한다. 객체의 상속관계를 슈퍼타입, 서브타입이라는 테이블로 구현할때는 3가지 방법을 선택할 수 있다. 1) Joined Table - 조인전략 2) Single Table - 단일 테이블 전략 3) Table per Class - 구현 클래스마다 테이블 전략 4) MapptedSuperclass - 위 세가지와는 성격이 조금 다르다. 테이블과는 관계가 없고 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모아주는 역할을 할 뿐이다...
DB Lock 동시성 제어의 종류와 구현 방법 1. 동시성 제어 방법 2. DataBase Lock 종류 3. DataBase Lock 구현 동시성 제어하는 여러 방법을 살펴보고 그중 DataBaseLevel 에 해당하는 DB Lock 의 종류와 사용방법을 정리한다. 출처는, 재고시스템으로 알아보는 동시성이슈 해결방법 - 인프런 | 강의 동시성 이슈란 무엇인지 알아보고 처리하는 방법들을 학습합니다., - 강의 소개 | 인프런 www.inflearn.com 1. 동시성 제어 방법 Lock은 열쇠와 같다. CriticalSection (얻고자 하는 데이터 영역) 에 접근하기위에는 Lock 을 얻고(acquire) 데이터를 사용한 뒤에 Lock 을 다시 반납(Release) 한다. 이렇게 데이터에 대해 동시성 제어를 하여 race Condition(공유되..
[book] The one thing -1- 전문가의 길을 향해 걸어라. 검은띠 수준에서 나오는 창의성은 일단 흰 띄 수준의 기본 동작을 모두 익히는 데서 나온다. 배움에서 언제나 더 높은 또 다른 수준이 있기 때문에 궁극적인 경지는 존재하지 않는다고 생각할 수 있다. 달리 말하면 우리는 경험한 것들에게 대해서는 '달인' 이 되는 반면, 앞으로 해야 할 것들에 대해서는 '견습생'이 된다. 바로 경지에 이르는 것을 여정이라 부르는 이유다. 유명한 기타리스트 에드워드 밴 헤일런의 형인 알렉스는 자기가 밤에 외출을 할 때마다 동생은 침대 맡에 앉아 기타를 연습했고, 몇 시간 후 집에 돌아와 보면 여전히 같은 자리에 앉아 연습 중이었다고 말한 적이 있다. 그것이 바로 끝나지 않는 전문가가 되는 길이다. ,무엇보다도 전문성은 투자한 시간에 비례한다...
[Spring] Transaction PROPAGATION.REQUIRES_NEW 의 '독립'이란 의미? 결론부터 말하자면, 스프링 트랜잭션중에 하나인 Requires_new 의 트랜잭션 스레드는 독립적이지 않다. 스프링 트랜잭션의 독립이란 물리적인것이 아닌 논리적 독립을 의미할 것이다. 아래 테스트 코드를 살펴보자. OuterClass에서 addItem() 에서 InnerService의 addCount()를 호출하고 addCount() 는 REQUIRES_NEW 의 속성을 갖는다. 새로운 독립적인 트랜잭션을 갖는다면 새로운 스레드를 생성하는것이 아닐까 착각할 수 있지만 아래와 같이 같은 쓰레드 값을 가진다. 그래서 만약, 아래처럼 InnerClass 에서 Exception 이 발생한다면 Propagation.REQUIRES_NEW 의 속성을 가졌다고 하더라도 아래처럼 outerService로 InnerCl..
[토비의 스프링 3.1] 3장 - 템플릿/콜백의 응용 [토비의 스프링 3.1] 3장에 정리된 내용. 중복된 코드를 고민하고 이를 템플릿/ 콜백 패턴을 통해 해결하는 과정이 순차적으로 정리되어 있다. 비슷한 코드를 실무에서 어떻게 고민하고 해결해야 할지 참고하여 적용해 볼 수 있을것 같다. 익숙해 질때까지 보고 또 보면 좋을 것 같아 정리해 둔다. 스프링을 사용하는 개발자라면 당연히 스프링이 제공하는 템플릿/콜백기능을 잘 사용할 수 있어야 한다. 동시에 팀플릿/콜백이 내장된 것을 원리도 알지 못한채로 기계적으로 사용하는 경우와 적용된 패턴을 이해하고 사용하는 경우는 큰 차이가 있다. 고정된 작업 흐름을 갖고 있으면서 여기저기서 자주 반복되는 코드가 있다면 중복되는 코드를 분리할 방법을 생각해보는 습관을 기르자. 중복된 코드는 먼저 메소드로 분리하는 간단한 시..
[Vue] 실행 모드(운영/개발)와 환경 변수 분리하기 - 사용자 실행모드를 추가할 수 있다. - 실행 모드별로 필요한 환경 변수를 다르게 설정 할 수 있다. package.json 파일에 스크립트 정보 추가 "[모드명]" : " vue-cli-service serve --mode [모드명]" package.json 에 cli 실행 스크립트에 모드 정보를 붙여 추가해 준다. 내가 추가한건 live, local, dev 이고 아래와 같이 실행 가능하다. npm run [모드명] 으로 실행 가능하다. npm run live npm run local npm run dev 모드명에 맞춰 환경 변수 파일 생성 ( .env.live, .env.dev) - package.json 과 같은 위치 (root) 에 두어야 한다. - .env.[mode].local 로 생성시에..