전체 글

개인 공부 목적으로 작성된 블로그 입니다.
PS/백준

[백준 10973번] 이전 순열 C++ 풀이

단순한 증명 연습하기 좋은 문제가 있어서 포스팅한다 1. 문제 https://www.acmicpc.net/problem/10973 10973번: 이전 순열 첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 문제를 요약하면 순열이 주어지는데, 주어진 순열보다 사전순으로 바로 앞선 순열을 출력해야한다. 2. 접근 일단 숫자들이 순열이라는 것에 대해서 중복된 숫자가 없고 $1$부터 $N$까지의 숫자임을 알 수 있다. 순열 사전순으로 제시하는 방법에 대해서 생각해보자. $k$번째 자리수가 낮아진다면 더 $k+1$ 번째 자리수들은 본인들이 가지고 있는 자리수들 중 가장 사전순으로 높은 부분순열조합을 가..

보안

[Spring Security in action] OAuth 2 실습해보기

이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. 실습환경: 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..

보안

[Spring Security in action] CSRF 보호 및 CORS 적용

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 ..

사이드 프로젝트

JPA 일대일 연관관계에서 지연로딩이 적용되지 않는 이유

계기 JPA에서 일대일 연관관계에서는 지연로딩이 적용되지 않는 경우가 있다. 프로젝트 진행중에 지연로딩을 지정하였음에도 지연로딩이 적용되지 않고 즉시로딩이 강제로 진행되는 것을 확인하게 찾아보게 되었다. 먼저 아래의 코드를 보자 사용자 정보를 가지고 있는 Member 엔티티와 사용자 세부 정보를 가지고 있는 MemberDetail 엔티티가 서로 일대일 연관관계를 가지게 된다. @Entity @Getter public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String summoner; private int medal; private String puuid; private St..

보안

[Spring Security in action] 인증 필터

필터 체인(Filter Chain) SpringSecurity architecture에 나와 있듯이 AuthenticationFilter는 요청과 가장 먼저 만나 AuthenticationManager에게 인증관리를 위임한다. 이러한 Filter들은 여러개가 존재할 수 있는데 그렇게 되면, 각각의 필터는 요청을 수신하여 최종적으로 다음 필터에게 요청을 전달하게 된다(인증 인가된 상황이라면) 이러한 여러 필터 구성을 필터 체인이라고 한다. 필터 체인은 상당한 개발 이점이 존재하는데 인증 시나리오에 맞혀서 구성이 가능하다는 것이다. (1차 인증, 2차 인증) 하나의 인증 흐름에 국한 하기 않고 분리할 수 있다는 것이 가장 큰 이점이다. https://docs.spring.io/spring-security/r..

보안

[Spring Security in action] 권한부여

이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. 권한 (Authorization) 보안 시스템이 인증, 인가를 제공한다는 것을 들어본적 있을 것이다. 인증이 리소스의 호출자를 판단하는 것이라면 인가는 요청을 승인하는 것으로 권한 부여(Authorization)이 이에 해당한다. 스프링 시큐리터에서는 다음과 같은 순서를 권한부여를 따른ㄴ다. 클라이언트의 요청 인증 필터에서 인증을 요청(Authentication Manager에게 위임) or 이미 인증되어이있다면 Security Context에서 인증 정보를 조회 인증필터가 권한 부여 필터에게 위임 권한 부여 필터가 권한을 확인 컨트롤러에게 전달 GrantedAuthority 우리는 이전에 UserDetai..

보안

[Spring Security in action] SecurityContext

이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. 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..

보안

[Spring Security in action] AuthenticationProvider을 사용한 인증

이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. 인증 지금까지 UserDetail을 활용하여 사용자를 정의하고 UserDetailsService와 UserDetailsManager를 이용해서 사용자에 관리, 접근할 수 있음을 알아보았다. 이번에는 AuthenticationProvider를 통해 어떻게 인증이 이루어지는 살퍼보고 SecurityContext에 어떻게 진입하게 되는지 알아보자 Authentication 인터페이스 Authentication 인터페이스는 인증 요청 이벤트로서 인증 요청및 엔티티의 세부 정보를 가지고 있다. 실제로 이전의 AuthenticationProvider에서 Authentication 구현체를 통해 인증 요청을 처리하는 것..

보안

[Spring Security in action] 사용자 관리

이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. UserDetailsService 사용자에 관해서는 UserDetailsService가 역활을 하고 있다. 이때 UserDetailsService는 사용자 검색, UserDetailManager는 사용자 CRUD역활을 가진다. UserDetailsService는 UserDetails에 정의된 사용자 정보를 이용하고, UserDetails는 GrantedAuthority인터페이스에 추상화된 권한을 일대다 관계로 가진다. UserDetails 정의 public interface UserDetails extends Serializable { String getUserName(); String getPassword..

Java

[이펙티브 자바] 아이템 10, 11

이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다 3장 모든 객체의 공통 메서드 3장부터는 자바의 최상위 부모 객체인 Object에 대해서 equals, hashCode, toString 과 같은 재정의 메서도들의 올바른 사용 방법에 대해 알아보자 10 equals는 일반 규약을 지켜 재정의하라 public boolean equals(Object obj) { return (this == obj); } 위코드는 object의 메소드 equals로 객체가 참조하는 인스턴스를 비교 하기 위해 사용할 수 있다. 책에서는 equals를 다음의 경우 재정의하지 않는것을 권장하고 있다.(아에 사용하는 것을 금지 해야하는 경우) 각 인스턴스가 본질적으로 교유할 경우로 값을..

bluesparrow
Bluesparrow