본문 바로가기

Spring Security

(7)
패스트캠퍼스 챌린지 18일차 - Spring Security 7 📌 Spring security 7 ✔️ FilterSecurityInterceptor 앞단에서 url을 근거로 권한 검증 수행한다. ex) .autorizeReuqests.antMatcher("/admin/**").hasRole("ADMIN") ✔️ Custom-AccessDeniedHandler AccessDeniedHandler 인터페이스 구현 구현메서드: handle 🚀 특정 예외 클래스에 대한 처리를 달리할 수 있다. handle(HttpServletRequest, HttpServletResponse, AccessDeniedException){ if (accessDeniedException instanceof CustomExceptionClass.class) { request.getRequest..
패스트캠퍼스 챌린지 17일차 - Spring Security 6 📌 Spring security 6 ✔️ ConcurrentSessionFilter 동시접속에 대한 처리(제한)를 수행한다. 만료된 토큰이 들어오지 못하도록 제어한다. ✔️ SessionManagementFilter SessionAuthenticationStrategy 인터페이스를 구현하는 클래스 정의한다. onAuthentication 구현 메서드를 구현한다. 인증이 발생한 경우 세션의 전략을 결정한다. ✔️ 스프링이 지원하는 Authentication strategy filter 세션 고정 정책 동시접속 제어 ✔️ ConcurrentSessionControlAuthenticationStrategy 세션에 대한 동시접속 발생시 설정된 한계값을 넘었을 때 기존 세션을 만료시킬 것인지, 새로운 세션을 거부..
패스트캠퍼스 챌린지 16일차 - Spring Security 5 📌 Spring security 5 ✔️ SecurityContextPersistenceFilter 세션이 유지되는 동안 SecurityContext를 유지한다. SecurityContextRepository (인터페이스) securityContext를 저장하는 저장소에 대한 인터페이스 구현체로 HttpSessionSecurityContextRepository를 가진다. Session저장소에서 securityContext를 찾는다. (securityContext를 session으로부터 찾는다) 인증 후 요청에 대해서는 세션에서 securityContext를 찾아서 securityContextHolder에 넣어줌 session에 저장된 securityContext에는 csrf토큰, authenticatio..
패스트캠퍼스 챌린지 15일차 - Spring Security 4 📌Spring Security 4 ✔️ BasicAuthenticationFilter 로그인 페이지를 사용하지 않는 상황에서 사용된다. (폼 로그인 ❌) ex) SPA (react,vue,angular..), 모바일앱 ✔️ BasicAuthenticationFilter 설정 SecurityConfig configure(HttpSecurity http) http.httpBasic(); ✔️ BasicAuthenticationFilter 동작 Authorization 헤더에 Basic 토큰을 검증한다. Basic 토큰은 id, password를 Base64로 인코딩한 값으로 이루어진다. Base64 인코딩은 누구나 디코딩 가능하기 때문에 보안에 매우 취약하다. (보안에 취약하므로 https 프로토콜을 사용히..
패스트캠퍼스 챌린지 14일차 - Spring Security 3 📌 Spring Security 3 ✔️ AuthenticationDetails 커스텀 details UserDetails가 아님 Authentication에서 인증정보 외 요청에 대한 정보를 담고있는 객체 구현 인터페이스 AuthenticationDetailsSource 구현 메서드 ReturnDTO buildDetails(HttpServletRequest request) { return ReturnDto().builder() .sessionId(request.getSession().getId()) .remoteIp(request.getRemoteAddr()) .loginTime(LocalDateTime.now()) .build(); } SecurityConfig에서 DI .formLogin( logi..
패스트캠퍼스 챌린지 13일차 - Spring Security 2 ✔️ "로그인에 성공했다" 라는 의미 SecurityContext의 Authentication의 Authenticated가 true로 설정되었다. Authentication이 AnonymousAuthenticationToken만 예외 ✔️SecurityContextHolder Authentication을 보관하는 저장소 ✔️Authentication , Token(인증토큰) Authentication은 인터페이스 대부분의 Authentication 구현체가 Token이라는 이름을 사용한다. 따라서 Authentication과 Token이라는 말을 혼용한다. ✔️Authentication의 정보 Set(GrantedAuthority): 권한정보 Principal: 인증대상의 정보 ex) UserDetail..
패스트캠퍼스 챌린지 12일차 - Spring Security 1 Spring security 1 ✔️security 기본 user/password 설정 설정파일로 설정 (한 명의 User만 설정 가능), 테스트 용도로 사용 아래 User 정보로 시큐리티 필터 통과 가능 spring.security.user: name: myuser password 1234 roles: USER ✔️ 현재 인증정보에 대한 접근 SecurityContextHolder spring security가 관리하는 인증정보가 담기는 곳 Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); ✔️ 컨트롤러에서 권한검증 @PreAuthorize + @EnableGlobalMethodSecurity(p..