728x90

WEB/Security 56

실전프로젝트 - 인가 프로세스 DB 연동 서비스 계층 구현

Method 방식 - 개요 서비스 계층의 인가처리 방식 1. 화면 , 메뉴 단위가 아닌 기능 단위로 인가처리 2. 메소드 처리 전.후 로 보안 검사 수행하여 인가처리 AOP 기반으로 동작 프록시와 어드바이스로 메소드 인가처리 수행 보안 설정 방식 어노테이션 권한 설정 방식 = @PreAuthorize("hasRole('USER')"), @PostAuthorize("hasRole('USER')"), @Secured("ROLE_USER") 맵 기반 권한 설정 방식 = 맵 기반 방식으로 외부와 연동하여 메소드 보안 설정 구현 어노테이션 권한 설정 - @PreAuthorize , @PostAuthorize , @Secured , @RolesAllowed @PreAuthorize, @PostAuthorize Sp..

WEB/Security 2023.01.20

실전프로젝트 - 인가 프로세스 DB 연동 웹 계층 구현

db와 연동하여 자원 및 권한을 설정하고 제어함으로 동적 권한 관리가 가능하도록 한다. antMatcher("/user").hasRole("USER") 없앰 웹 게반 인가처리 DB 연동 - 주요 아키텍처 이해 이제 db를 사용하니 http.anMatchers를 사용안할거지만 , 원래는 저렇게 configure해놓으면 Map으로 들고 있다가 AccessDecisionManager에게 비교할 수있게 ref를 제공해준다. 접근을 시도하려는 request's authentication의 authority를 확인하여 허용해줄지 말지를 결정하게 된다. MapBasedMethodSecurityMetadataSource 를 통해서 db에서 authority를 추출하는 방식을 사용할 수 있다. 위에 3개는 이미 구현완료..

WEB/Security 2023.01.16

실전프로젝트 - 인증 프로세스 Ajax 인증 구현

인증 필터 - AjaxAuthenticationFilter AbstractAuthenticationProcessingFilter 상속 필터 작동 조건 = AntPathRequestMatcher("/api/login") 로 요청 정보와 매칭하고 요청 방식이 Ajax이면 필터 작동 public class AjaxLoginProcessFilter extends AbstractAuthenticationProcessingFilter { private ObjectMapper objectMapper = new ObjectMapper(); public AjaxLoginProcessFilter() { super(new AntPathRequestMatcher("/api/login")); } @Override public ..

WEB/Security 2023.01.15

스프링 시큐리티 주요 아키텍처 이해

위임 필터 및 필터 빈 초기화 - DelegatingFilterProxy, FilterChainProxy DelegatingFilterProxy 는 servletContainer에서는 spring 기능을 사용하지 못하니까 요청을 FilterChainProxy에게 넘겨주는 역할을 담당한다. apache tomcat의 ApplicationChainFilter에서 DelegatingFilterProxy로 넘겨주게된다. 필터 초기화와 다중 보안 설정 여러개의 FilterSecuirtyChain 을 만들어서 FilterChainProxy에 등록을 하는과정이다. 각각의 FSC는 antMatcher를 통해 어떤 resource를 담당할지 정하게 된다. FilterChainProxy에서 등록된 여러 FSC중 Reque..

WEB/Security 2023.01.10

스프링 시큐리티 기본 API 및 Filter 이해 (안겹치는것만)

LogOut 처리, LogoutFilter RememberMeAuthentiationFilter 위에 필터가 동작하기 위한 조건 1. Security Context에 Authentication 이 null인경우 2. remember-me cookie값을 가지고 접속한 경우 둘다 충족할 떄 필터에 걸리게 된다. RemberMeService 의 구현체가 2가지 종류가 있다. TokenBased = 메모리기반 PersistentTokenBased = 디비기반 httpSecurity.rememberme() 를 통해 spring 기동시 해당 필터를 만들어주게되고 remberme cookie를 주는 시점은 첫번째로 인증을 성공하여 successfulAuthentication 메소드에서 제공해준다. 신기하게 Prov..

WEB/Security 2023.01.08

OAuth 2.0 Client + Resource Server + Authorization Server 연동

리소스 서버는 Album 자원과 Friend 자원으로 각 실행된다. 처리순서 1. 클라이언트에서 인가서버로 Authorization code grant type으로 토큰을 발급받고 이후 사용자 엔드포인트 요청으로 인증을 진행한다. 2. 클라이언트에서 인증에 성공하면 Album 리소스 서버로 자원요청을 한다. 3. Album 리소스 서버에서 Friend 리소스 서버로 토큰을 가지고 내부 통신을 통해 자원 요청을 한다. 4. 최종적으로 반환받은 Albums 와 Friend 리소스를 클라이언트로 응답한다. Authorization Code 방식으로 인증 및 userinfo 를 요청하는 과정 resource server에게 OAuth2Client 에서 Albums, Friends를 요청하는 과정 중요한것은 re..

WEB/Security 2022.12.28

Spring Authorization Server - 엔드포인트 프로토콜

OAuth 2.0 AuthorizationServer Endpoint 기능 및 특징 OAuth2AuthorizationEndpointConfigurer OAuth2 권한 부여 엔드포인트에 대한 사용자 정의 할 수 있는 기능을 제공한다. OAuth2 권한 부여 요청에 대한 전처리 , 기본 처리 및 후처리 로직을 커스텀하게 구현할 수 있도록 API를 지원한다. OAuth2AuthorizationEndpointFilter 를 구성하고 이를 OAuth2 인증 서버 SecurityFilterChain 빈에 등록한다. OAuth2AuthorizationEndpointFilter OAuth2 인증 요청(및 동의)을 처리하는 필터이며 다음과 같은 기본값으로 구성된다. OAuth2AuthorizationCodeReque..

WEB/Security 2022.12.26

Spring Authorization Server + 주요 도메인 클래스

OAuth2.0 Authorization Server 소개 OpenID Connect 1.0 공급자 및 OAuth2 권한 부여 서버 제품을 구축하기 위한 안전하고 가볍고 사용자 지정 가능한 기반을 제공하기 위해 존재함 -> 기존에 keycloak으로 대신했던 auth server를 직접만들 수 있는 프레임워크를 제공하는 것임 초기화 과정 이해 - OAuth2AuthorizationServerConfiguration OAuth2AuthorizationServerConfiguer를 추가되면 나머지 5개의 Configurer 들이 추가되고 build시 각각의 init, configure 메소드를 호출하며 필터를 만들어 낸다. OAuth2 인가 서버에 대한 최소 기본 구성을 제공하는 설정 클래스이다. OAuth..

WEB/Security 2022.12.25

OAuth 2.0 Resource Server - 리소스 서버 권한 구현 + opaque()

Scope 기반 권한 매핑 구현하기 client 가auth server로 Oauth2.0 권한 부여 요청을 할 때 사용자의 리소스에 대한 접근 범위를 제한하기 위해 마련해 놓은 장치 client는 하나이상의 scope를 요청할 수 있으며 동의 화면에서 사용자가 scope를 지정하게 되면 scope 범위에 제한된 토큰이 발행된다. auth server에 해당 scope에 적힌것들이 다 존재해야한다. 권한 부여 요청시 인가서버에 지정했던 scope가 리소스 서버의 권한 범위에 포함하지 않으면 접근이 거부된다. 권한 부여 요청시 인가서버에 지정했던 scope가 리소스 서버의 권한범위에 포함되면 접근이 허용된다. 예를들면) GET /photos/ 로 요청을 날릴시 token에 photo scope가 있어야만 허..

WEB/Security 2022.12.25

OAuth 2.0 Resource Server - MAC & RSA 토큰 검증

기본 환경 및 클래스 구성 토큰 검증방법 1. 암호화 알고리즘 방식에 따라 직접 발행한 JWT 토큰을 대상으로 검증을 진행한다. 2. auth server에서 발행한 Access Token 을 대상으로 검증을 진행한다. MAC검증 방법 1. 자체 토큰 발행 및 검증 2. SecretKey 설정에 의한 검증 RSA검증 방법 1. 자체 토큰 발행 및 검증 2. PublicKey 파일에 의한 검증 3. KeyStore 툴에 의한 검증 4. JwkSetUri 설정에 의한 검증 @Configuration public class OAuth2ResourceServer{ @Bean SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {..

WEB/Security 2022.12.23
728x90