분류 전체보기 1341

User Service - 등록

여러개의 MicroService를 실행하려고 하면 Port중복 오류가 발생한다 yml파일에 Port를 변경하게 된다면, 정상 실행은 되지만. 코드를 수정한 것이기 때문에 매번 재패키징과, 빌드 베포 과정이 필요하다. 이를 해결하기 위해 여러 옵션을 줄 수 있다. UserService 실행하기 (Port 변경 1) Run을 EditConfig 설정 실행시 VM -options 를 통해 원하는 Port로 실행시점에 실행시킬수 있다. UserService 실행하기(Port변경 2) 해당 터미널에서 런타임시에 JVM에 옵션을 주어 Port 번호를 지정할 수가 있다. UserService 실행하기(Port변경 3) jar file로 패키징 mvn clean mvn compile package java -jar -..

Eureka Service Discovery - 프로젝트 생성

Service Discovery Key - value를 사용하여 각각의 서비스를 등록한다. EurekaServer를 Dependency로 추가만 해도 DiscoveryService를 제공할 수 있다. Pom.xml Maven을 실행했기 때문에 Pom.xml 파일이 실행이 된다. spring-cloud.version은 2021.0.0 버전을 사용하였다. SpringBoot 버전에 따라 문서를 확인한 뒤 버젼을 선택하면 된다. application.yml Server.port : 서버에서 사용하는 포트 spring.application.name : MSA에서 사용하는 애플리케이션 이름 eureka.client.register-with-eureka, fetch-registry : 유레카 서버로서 자기 자신을 ..

ch08. ProxyFactory 를 활용한 실시간 메소드 보안 구현

개선점 메서드 보안은 스프링 시큐리티 초기화 시점에 보안 적용 대상 빈의 프록시 생성 및 어드바이스 적용이 이루어짐 DB에 자원을 실시간으로 업데이트하더라도AOP 가 바로 적용되지 않음 초기화 과정에 프락시 객체가 생기고 advice를 생성하기 때문에 보안 메서드 실시간 적용 처리 과정 메소드 보안 최초 설정 시 대상 빈의 프록시 객체 생성하고 메소드에 Advice 등록하여 AOP 적용 MapBasedMethodSecurityMetadataSource에 자원 및 권한 정보 전달 DefaultSingletonBeanRegistry로실제 빈을 삭제하고 프록시 객체를 빈 참조로 등록한다 보안이 적용된 메서드 호출 시 Advice 가 작동한다 메소드 보안 해제 시 메서드에등록된 Advice를 제거한다 메서드 보..

ch07. AOP Method 기반 DB 연동 - ProtectPointcutPostProcessor

ProtectPointcutPostProcessor 메서드 방식의 인가처리를 위한 자원 및 권한 정보 설정 시 자원에 포인트 컷 표현식을 사용할 수 있도록 지원하는 클래스 빈 후처리기로서 스프링 초기화 과정에서 빈 들을 검사하여 빈이 가진 메소드 중에서 포인트 컷 표현식과 matching 되는 클래스 , 메서드,권한 정보를 MapBasedMethodSecurityMetadataSource에전달하여 인가처리가 되도록 제공되는 클래스 DB 저장 방식 Method 방식 io.security.service.OrderService.order : ROLE_USER Pointcut 방식 execution(* io.security.service.*Service.*(..)) : ROLE_USER 설정 클래스에서 빈 생성..

ch06. AOP Method 기반 DB 연동 - MapBasedSecurityMetadataSource (3)

DB로부터 ResourceMap을 만들어 생성자로 MapBaseMethodSecurityMetadataSource에 전달하면 된다. MethodResourcesMapFactoryBean DB로 부터 얻은 권한/자원 정보를 ResourceMap을 빈으로 생성해서 MapBasedMethodSecurityMetadataSourceMapBasedMethodSecurityMetadataSource 에 전달 DefaultAdvisorAutoProxyCreator가 MethodSecurityMetadataSourceAdvisor를 통해 프락시 객체를 생성한다. MethodSecurityMetadataSourcePointcut이 프락시 생성 대상 클래스 탐색, advice 등록 대상 메소드를 탐색한다. 클래스 정보, ..

ch05. AOP Method 기반 DB 연동 - MapBasedSecurityMetadataSource (2)

어노테이션 설정 방식이 아닌 맵 기반으로 권한 설정 기본적인 구현이 완성되어 있고 DB로부터매핑한 데이터를 전달하면 메소드 방식의 인가처리가 이루어지는 클래스 프록시 객체가 Advice를 호출하여 인가처리를 시작한다. 권한 정보를 MapBasedMethodSecurityMetadataSource에 요청한다. Map 형태로 이미 데이터를 가지고 있다(Method - 권한 List) 권한 목록이 있으므로 AccessDecisionManager에 전달한다. 설정 클래스 만들기

ch04. AOP Method 기반 DB 연동 - MapBasedSecurityMetadataSource (1)

Filter 기반 URL 방식 Filter를 기반으로 요청을 가로채 인가 처리를 한다. 초기화 시 URL - 권한 LIst를 Map 형태로 가지고 있는다. AOP 기반 Method 방식 프록시 객체가 메서드를 호출하고, 메서드에 등록된 Advice를 동작시켜 인가처리를 한다. 초기화 시, Method - 권한 List를 Map 형태로 가지고 있는다. 공통적인 목적은 인가처리를 하는것이다.

ch03. 어노테이션 권한 설정 - @PreAuthorize, @PostAuthorize, @Secured, @RolesAllowed

보안이 필요한 메서드에 설정한다 @PreAuthorize, @PostAuthorize SpEL 지원 @PreAuthorize("hasRole('ROLE_USER’) and (#account.username == principal.username)") PrePostAnnotationSecurityMetadataSource 가 담당 @Secured, @RolesAllowed SpEL 미지원 @Secured ("ROLE_USER"), @RolesAllowed("ROLE_USER") SecuredAnnotationSecurityMetadataSource, Jsr250MethodSecurityMetadataSource 가 담당 @EnableGlobalMethodSecurity(prePostEnabled = tru..