이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. 실습환경: spring boot 3.xx 권한 부여 서버는 github의 OAuth app을 활용 클라이언트와 권한 부여 서버간의 연결 구현 https://docs.spring.io/spring-security/reference/servlet/oauth2/index.html OAuth2 :: Spring Security To get started, add the spring-security-oauth2-client dependency to your project. When using Spring Boot, add the following starter: OAuth2 Client with Spring Boot..
CSRF Spring Security에서는 기본적으로 POST 요청에 대해서 거부하도록 설정되어 있다. CSRF 공격으로 부터 예방하기 위해서 인데 POST 요청을 혀용하는 방법으로 GET 요청시 반환되는 토큰을 헤더에 넣어 보내면 POST 요청을 허용하는 방식이다. (기본적으로 데이터가 변경되기 전에 데이터를 조회 또는 view를 렌더링해야한다는 조건이 포함되는 것이다) public class CsrfTokenLogger implements Filter { private Logger logger= Logger.getLogger(CsrfToken.class.getName()); @Override public void doFilter(ServletRequest request, ServletResponse ..
필터 체인(Filter Chain) SpringSecurity architecture에 나와 있듯이 AuthenticationFilter는 요청과 가장 먼저 만나 AuthenticationManager에게 인증관리를 위임한다. 이러한 Filter들은 여러개가 존재할 수 있는데 그렇게 되면, 각각의 필터는 요청을 수신하여 최종적으로 다음 필터에게 요청을 전달하게 된다(인증 인가된 상황이라면) 이러한 여러 필터 구성을 필터 체인이라고 한다. 필터 체인은 상당한 개발 이점이 존재하는데 인증 시나리오에 맞혀서 구성이 가능하다는 것이다. (1차 인증, 2차 인증) 하나의 인증 흐름에 국한 하기 않고 분리할 수 있다는 것이 가장 큰 이점이다. https://docs.spring.io/spring-security/r..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. 권한 (Authorization) 보안 시스템이 인증, 인가를 제공한다는 것을 들어본적 있을 것이다. 인증이 리소스의 호출자를 판단하는 것이라면 인가는 요청을 승인하는 것으로 권한 부여(Authorization)이 이에 해당한다. 스프링 시큐리터에서는 다음과 같은 순서를 권한부여를 따른ㄴ다. 클라이언트의 요청 인증 필터에서 인증을 요청(Authentication Manager에게 위임) or 이미 인증되어이있다면 Security Context에서 인증 정보를 조회 인증필터가 권한 부여 필터에게 위임 권한 부여 필터가 권한을 확인 컨트롤러에게 전달 GrantedAuthority 우리는 이전에 UserDetai..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. SecurityContext https://docs.spring.io/spring-security/reference/servlet/authentication/architecture.html Servlet Authentication Architecture :: Spring Security ProviderManager is the most commonly used implementation of AuthenticationManager. ProviderManager delegates to a List of AuthenticationProvider instances. Each AuthenticationProvide..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. 인증 지금까지 UserDetail을 활용하여 사용자를 정의하고 UserDetailsService와 UserDetailsManager를 이용해서 사용자에 관리, 접근할 수 있음을 알아보았다. 이번에는 AuthenticationProvider를 통해 어떻게 인증이 이루어지는 살퍼보고 SecurityContext에 어떻게 진입하게 되는지 알아보자 Authentication 인터페이스 Authentication 인터페이스는 인증 요청 이벤트로서 인증 요청및 엔티티의 세부 정보를 가지고 있다. 실제로 이전의 AuthenticationProvider에서 Authentication 구현체를 통해 인증 요청을 처리하는 것..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. UserDetailsService 사용자에 관해서는 UserDetailsService가 역활을 하고 있다. 이때 UserDetailsService는 사용자 검색, UserDetailManager는 사용자 CRUD역활을 가진다. UserDetailsService는 UserDetails에 정의된 사용자 정보를 이용하고, UserDetails는 GrantedAuthority인터페이스에 추상화된 권한을 일대다 관계로 가진다. UserDetails 정의 public interface UserDetails extends Serializable { String getUserName(); String getPassword..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. Spring security Spring security는 Spring 에서 제공하는 프레임워크로 보안에서의 인증, 인가를 지원한다. Spring security를 통해 애플리케이션 측면에서 보안이 어떻게 이루어지는지 학습하고 최종적으로는 Oauth2를 사용하보자 초기 설정 implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6' build.gradle 에 다음을 추가하자 이때, thymeleaf-extras-sp..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. 요새에 휴대폰으로 결제를 하는데 10초도 안걸리는 등 온라인 결제가 발달했는데 이러한 전자 지불 시스템이 어떻게 이루어져 있을까? 전자 지불 시스템 일반적으로 우리가 생각해볼수 있는 방식은 사용자와 판매자 그리고 은행 이렇게 3명으로 전자 지불 시스템이 이루어진다 생각한다. 그런데 실제로는 PG라는 4명이여 전자 지불 시스템을 구성한다. PG는 Payment Gateway로서 전자자금결제대행업체 또는 전자 결제 서비스라고 부른다. 지불 게이트웨이 방식: 돈 거래에 있어서 거래가 발생하면 거래정보를 받아서 PG 업체가 거래를 중계하고 은행과 정산을 대행한다. 위와 같이 우리가 일반적으로 많이 봐왔던 결제 페이..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다 앞 포스팅과 이어집니다~ https://bluesparrow.tistory.com/19 [보안] 비대칭 암호화, ElGamal, RSA 이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다 앞 포스팅과 이어집니다~ https://bluesparrow.tistory.com/18 [보안] 공개키와 비대칭 암호화 알고리 bluesparrow.tistory.com 0. 비대칭 암호화에서 공개키의 취약성 앞선 포스팅에서 비대칭암호화 기법에 대해 알아보았다. 이때 비대칭암호화 기법은 보안 강도가 높은 대신 공개키를 통신자들 간에 전달하는 중 위변조될 수 있었다. 이번 포스팅에 ..