Language (101) 썸네일형 리스트형 인가 설정 응용 - RequestMatcherDelegatingAuthorizationManager RequestMatcherDelegatingAuthorizationManager의 mappings 속성에 직접 RequestMatcherEntry 객체를 생성하고 추가RequestMatcherEntry 클래스의 메서드getEntry() : 요청 패턴에 매핑된 AuthorizationManager 객체를 반환getRequestMatcher() : 요청 패턴을 저장한 RequestMatcher 객체를 반환적용RequestMatcherDelegatingAuthorizationManager를 감싸는 CustomRequestMatcherDelegatingAuthorizationManager를 구현 적용 후 구조가장 바깥쪽에는 access() API 사용 시 기본으로 생성되기 때문에 위와 같은 구조를 가짐위와 같.. 요청 기반 Custom AuthorizationManager 구현 스프링 시큐리티 인가 설정 시 선언적 방식이 아닌 프로그래밍 방식으로 구현할 수 있으며 access(AuthorizationManager) API 를 사용access()에는 AuthorizationManager 타입의 객체를 전달할 수 있으며 사용자의 요청에 대한 권한 검사를 access()에 지정한 AuthorizationManager가 처리access() 에 지정한 AuthorizationManager 객체는 RequestMatcherDelegatingAuthorizationManager의 매핑 속성에 저장적용특정한 엔드포인트에 대한 권한 검사를 수행하기 위해 AuthorizationManager를 구현하여 설정"/user", "/myPage", "/admin" 요청 패턴의 권한 검사는 Authori.. 요청 기반 인가 관리자 - AuthorityAuthorizationManager 외 클래스 구조 이해 스프링 시큐리티는 요청 기반의 인증된 사용자 및 특정 권한을 가진 사용자의 자원 접근 허용 여부를 결정하는 인가 관리자 클래스들을 제공대표적으로 AuthorityAuthorizationManager, AuthenticatedAuthorizationManager와 대리자인 RequestMatcherDelegatingAuthorizationManager스프링 시큐리티 인가 처리http.authorizeHttpRequests(auth -> auth .requestMatchers("/user").hasRole("USER")/user 엔드포인트 접근은 인증 객체에서 ROLE_USER 권한을 필요로 함Request → /user 엔드포인트 접근Authentication → 인증 객체ROLE_USER 권한 → G.. 인가 관리자 이해 - AuthorizationManager AuthorizationManager는 인증된 사용자가 요청 자원에 접근할 수 있는지 여부를 결정하는 인터페이스로서 인증된 사용자의 권한 정보와 요청 자원의 보안 요구 사항을 기반으로 권한 부여 결정을 내림AuthorizationManager는 Spring Security의 요청 기반, 메소드 기반의 인가 구성 요소에서 호출되며 최종 액세스 제어 결정을 수행AuthorizationManager는 Spring Security의 필수 구성 요소로서 권한 부여 처리는 AuthorizationFilter를 통해 이루어지며 AuthorizationFilter는 AuthorizationManager를 호출하여 권한 부여 결정을 내림 구조check()권한 부여 결정을 내릴 때 필요한 모든 관련 정보(인증객체, 체크 .. 인가 - Authorization 인가(권한 부여)는 특정 자원에 접근할 수 있는 사람을 결정하는 것을 의미Spring Security는 GrantedAuthority 클래스를 통해 권한 목록을 관리하고 있으며 사용자의 Authentication 객체와 연결사용자가 인증(Authentication)을 받은 뒤 해당 사용자가 어떤 권한을 가지고 어디에 접근을 할 수 있는지가 인가(Authorization) → 인증이 되어야 인가로 넘어갈 수 있음GrantedAuthority스프링 시큐리티는 Authentication에 GrantedAuthority권한 목록을 저장하며 이를 통해 인증 주체에게 부여된 권한을 사용GrantedAuthority 객체는 AuthenticationManager에 의해 Authentication 객체에 삽입 → 스프.. 계층적 권한 - RoleHireachy 기본적으로 스프링 시큐리티에서 권한과 역할은 계층적이거나 상하 관계로 구분하지 않음 → ROLE_ADMIN이 ROLE_USER보다 더 큰 개념이라고 인식하지 않음 → 따라서 인증 주체가 다양한 역할과 권한을 부여 받아야 함RoleHirerachy는 역할 간의 계층 구조를 정의하고 관리하는 데 사용되며 보다 간편하게 역할 간의 계층 구조를 설정하고 이를 기반으로 사용자에 대한 액세스 규칙을 정의 가능 ROLE_A > ROLE_B ROLE_B > ROLE_C ROLE_C > ROLE_D ROLE_A를 가진 모든 사용자는 ROLE_B, ROLE_C 및 ROLE_D도 가짐ROLE_B 를 가진 모든 사용자는 ROLE_C 및 ROLE_D도 가짐ROLE_C 를 가진 모든 사용자는 ROLE_D도 가짐계층적 역할.. 정적 자원 관리 스프링 시큐리티에서 RequestMatcher 인스턴스를 등록하여 무시해야 할 요청을 지정 가능주로 정적 자원(이미지, CSS, JavaScript 파일 등)에 대한 요청이나 특정 엔드포인트가 보안 필터를 거치지 않도록 설정할 때 사용 사용 방법@Beanpublic WebSecurityCustomizer webSecurityCustomizer() { return (webSecurity) -> { webSecurity.ignoring().requestMatchers(PathRequest.toStaticResources().atCommonLocations()); }; } StaticResourceLocation CSS("/css/**"),JAVA_SCRIPT("/js/**"),IMAGES("/imag.. 메서드 기반 권한 부여 - @Secured, JSR-250 및 부가 기능 @Secured@Secured 어노테이션을 메소드에 적용하면 지정된 권한(역할)을 가진 사용자만 해당 메소드를 호출할 수 있으며 더 풍부한 형식을 지원하는 @PreAuthorize 사용을 권장@Secured 어노테이션을 사용하려면 스프링 시큐리티 설정에서 @EnableMethodSecurity(securedEnabled = true) 설정을 활성화해야 함@Secured("ROLE_USER")public void performUserOperation() {// ROLE_USER 권한을 가진 사용자만 이 메소드를 실행 가능}JSR-250JSR-250 기능을 적용하면 @RolesAllowed, @PermitAll 및 @DenyAll 어노테이션 보안 기능이 활성화JSR-250 어노테이션을 사용하려면 스프링 시큐.. 이전 1 ··· 5 6 7 8 9 10 11 ··· 13 다음