make it simple
article thumbnail
[Kotlin] @PreAuthorize를 사용한 인가(Authorization)처리
Kotlin 2023. 4. 29. 11:28

Authorization이란? 인증(Authentication)받은 사용자가 가지고 있는 인가를 뜻한다. 인가는 유저가 가지고있는 권한(Role)을 확인해서 권한이 가지고있는 액션들만 행할 수 있다. 밑과 같이 예제를 들면 ADMIN/USER 권한이 있고 각 권한마다 할 수 있는 행동들이 정해져 있다. 인증된 유저가 권한이 해당되는 액션들만 할 수 있게 처리하는게 인가(Authorization)이다. Spring Security를 사용해 간단하게 구현해보자. ADMIN 권한: 회원 승인/ 회원차단 USER 권한: 회원가입 data class SimpleAuthentication( val user: User ) : Authentication { override fun getAuthorities(): Col..

article thumbnail
[DDD] 도메인 주도 개발 시작하기 CH_8. 애그리거트 트랜잭션 관리
책/도메인 주도 개발 2023. 4. 17. 05:02

위와 같이 한 애그리거트에서 두 사용자가 동시에 변경할 경우는 어떻게 해야할까? 주문 애그리거트에서 운영자와 고객이 동시에 수정하는 과정이다. 운영자는 배송 상태를 변경 고객은 배송지를 변경 위와 같은 경우에서 문제점은 운영자는 기존 배송지 정보를 이용해 배송 상태를 변경하고 그 사이에 고객은 배송지 정보를 변경했다. 이럴 경우에는 두 가지중 하나를 해야한다. 운영자가 배송지를 조회하고 상태를 변경하는동안, 고객이 애그리거트를 수정하지 못하게 제한 운영자가 배송지 정보를 조회한 이후에 고객이 수정하면, 운영자가 다시 조회한 후 배송상태 변경 결국에는 하나가 실행된 후에 다른 하나가 실행되야한다. DBMS가 지원하는 트랜잭션과 함꼐 애그리거트를 위한 트랜잭션 처리 기법을 사용해 처리해야한다. 대표적인 트랜..

article thumbnail
JWT(JSON WEB TOKEN) 이란?
DevOps&Network 2023. 4. 17. 04:26

개요 인증방식은 어떤 서비스를 하던 거의 쓰이며 중요하다. 보통 Cookie/Session/JWT 세가지 방식이 있는데 JWT를 보편적으로 실무에서 많이 사용한다. 위 세가지 방식에 대해 차이점과 왜 JWT가 보편적으로 많이 사용하는지 알아보자. Cookie / Session 차이점 Cookie 웹 브라우저에 저장되는 키-값 쌍의 작은 데이터 파일 서버에서 클라이언트에게 쿠키를 설정하도록 요청하고, 클라이언트는 쿠키를 저장하고 다음 요청에 함께 보내게 됨 클라이언트 측에서 쿠키를 관리하므로 서버에서는 쿠키를 조작할 수 없음 브라우저를 종료해도 쿠키는 보존될 수 있으며, 만료 기간을 설정할 수 있음 -> 단점: 클라이언트에서 관리하므로 보안이 약하다. 또한, 네트워크에 부담이 간다. Session 서버 ..

article thumbnail
[JAVA] 프로그래머스: 가까운 수

https://school.programmers.co.kr/learn/courses/30/lessons/120890 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr public int solution(int[] array, int n) { int answer = 0; Arrays.sort(array); for(int i = 1 ; i Math.abs(n-array[i])){ array[0] = array[i]; } } answer = array[0]; return ans..

article thumbnail
[JAVA] 프로그래머스: k의 개수

https://school.programmers.co.kr/learn/courses/30/lessons/120887 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr public int solution(int i, int j, int k) { int answer = 0; for(int a = i; a