우주먼지
article thumbnail
Reactive System & Reactive Programming
Framework/Spring 2022. 11. 29. 03:42

💡 Reactive System & Reactive Programming 선언형 프로그래밍(Lambda 표현식, Stream API), 순차 실행 X Reactive System은 Requst Thread의 응답 대기시간을 최소화 할 수 있게 Non-Bloking 통신 지원함 Reactive Programming 에서의 반응은 Thread의 Non-Blocking과 관련이 있다 Reactive System 설계 원칙 Means - 리액티브 시스템의 커뮤니케이션을 담당 Message Driven 리액티브 시스템은 메세지 기반 통신을 통한 시스템 간 느슨한 결합 유지 Form - 메세지 기반 통신을 통한 구조 형성 Elastic 트래픽량에 관계없이 일정한 응답성 유지 Resiilient 시스템 장애 발생 시..

article thumbnail
OAuth2 Authentication
Framework/Spring 2022. 11. 25. 10:21

💡 OAuth2 [출처] OAuth 2.0 동작 방식의 이해|작성자 MDS인텔리전스 JWT는 사용자의 Credential을 직접 백엔드 어플리케이션에서 관리하는 구조이지만 OAuth2의 인증 방식은 백엔드 어플리케이션의 직접적인 관여가 없고, ThirdParty에서 사용자의 인증처리를 위임하고 Resource에 대한 자격증명 토큰을 발급한다 OAuth2를 적용하기 적합한 Application 유형 ThirdParty Application의 직접적인 API 사용하는 경우 다중 인증 목적 (보안성 ↑)의 경우 User의 Credential 정보의 흔적을 남기고 싶지 않을 경우 OAuth2 구성요소 Resource Owner 사용할 Resource의 Owner -> 서비스를 이용하는 클라이언트 Client 보..

article thumbnail
Implement JWT Login Authentication
Framework/Spring 2022. 11. 25. 04:42

💡 Processing Flow 💡 구현 사전 작업 UserDto의 Post 내부클래스에 password 필드 추가 Entity 클래스에 password 필드, 권한테이블 생성 로직 추가 SecurityConfiguration : Spring Security를 이용한 보안 강화를 위한 보안 구성 Annotation @Configuration implementation, extends None Dependency Injection JwtTokenizer Method @Bean public SecurityFilterChain -> 보안 설정 param = HttpSecurity throws = Exception 로그인 방식, csrf공격 방지 등 보안 옵션 설정 return http.build() @Bean..

article thumbnail
JWT (Json Web Token) & Sticky Session
Framework/Spring 2022. 11. 22. 10:01

💡 JWT 인증 (CSR 방식) 기존 SSR 세션 기반 방식 HTTP는 Request 전송 후 & Response 수신 후 Connection을 끊는 비연결성, Request, Response에 대한 상태를 버리는 비상태성의 특성이 있는데, 서버에서는 매번 인증된 사용자가 보낸 Request인지 어떻게 구분할까? 답은 세션 기반의 자격증명 방식을 사용해 유저의 정보를 세션의 형태로 저장한다 JWT 유래 SSR 방식에서의 세션 기반 FilterChain 인증을 사용했을때 인증에 필요한 리소스는 모두 서버가 부담해야했다. 이 리소스 부담을 덜어줄 방법을 고안해낸게 CSR방식의 JWT인증으로, 인증부담을 클라이언트에게 전가한다. 민감정보를 클라이언트 측에서 보관하는 보안관점에서의 취약점 -> 인증정보 암호화로..

Spring EL 접근 제어 표현식
Framework/Spring 2022. 11. 21. 03:44

💡 Spring EL 접근 제어 표현식 hasRole(String role) 보안의 주체(principal)가 지정된 역할을 가지고 있다면 true 리턴 파라미터의 값은 ROLE_로 시작해야하지만 DefaultWebSecurityExpressionHandler의 defaultRolePrefix를 수정하여 Customize 할 수 있다 hasAnyRole(String... roles) principal이 지정한 역할이 1개 이상이면 true 리턴, 문자열의 리스트를 ','로 구분하여 전달한다 hasAuthority(String authority) principal이 지정한 권한을 가지고 있으면 true 리턴, ex) hasAuthority('write') hasAnyAuthority(String... au..

article thumbnail
Authorization
Framework/Spring 2022. 11. 21. 03:02

💡 Processing Flow Spring Security 5.5 이전 버전까지는 FilterSecurityInterceptor를 통한 권한 부여 처리 과정이 상당히 복잡해서 이해가 쉽지 않았지만 5.5 부터는 AuthorizationFilter의 손쉬운 AuthorizationManager API를 이용한 권한 부여 작업을 할 수 있게 되었다. 1. AuthorizationFilter는 SecurityContextHolder로부터 Authentication 획득 2. AuthorizationFilter는 SecurityContextHolder로부터 얻은 HttpServletRequest & Response , FilterChain을 기반으로 FilterInvocation 생성 3. Authorizat..

article thumbnail
Authentication
Framework/Spring 2022. 11. 20. 05:42

💡 Processing Flow 1. User의 로그인 시도, Request를 제일 먼저 만나는 컴포넌트 - UsernamePasswordAuthenticationFilter Login Form 방식의 로그인 시 사용 2. ID, PW를 전달받은 UsernamePasswordAuthenticationFilter는 UsernamePasswordAuthenticationToken을 생성 * UsernamePasswordAuthenticationFilter는 AbstractAuthenticationProcessingFilter를 상속한다. UsernamePasswordAuthenticationToken은 Authentication 인터페이스의 구현체이다 3. 인증이 되지않은 Authentication을 Aut..

검색 태그