이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. 권한 (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..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다 3장 모든 객체의 공통 메서드 3장부터는 자바의 최상위 부모 객체인 Object에 대해서 equals, hashCode, toString 과 같은 재정의 메서도들의 올바른 사용 방법에 대해 알아보자 10 equals는 일반 규약을 지켜 재정의하라 public boolean equals(Object obj) { return (this == obj); } 위코드는 object의 메소드 equals로 객체가 참조하는 인스턴스를 비교 하기 위해 사용할 수 있다. 책에서는 equals를 다음의 경우 재정의하지 않는것을 권장하고 있다.(아에 사용하는 것을 금지 해야하는 경우) 각 인스턴스가 본질적으로 교유할 경우로 값을..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다 7. 다 쓴 객체 참조를 해제하라 자바에서는 garbage collection이라는 메모리 해제 툴로 인해 사용한 객체 해제에 대해 별로 신경 쓰지 않는다. 책에서는 메모리 해제에 대해 어느정도 주의할 것을 요구하고 있다. 다음 코드를 보자 public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void pus..
항상 MySQL workbench를 통해서 작업을 했었는데 콘솔에서 커맨드로 실행하면서 여러 명령어도 숙달 해보고자 한다. MySQL 저장 위치 찾기먼저 MySQL 저장 위치를 찾아야 한다. 나처럼 설치경로를 따로 지정하지 않았다면 C:\Program Files\MySQL\MySQL Server 8.0\bin 에 찾을 수 있다. MySQL Shell 도 확인할 수 있었는데 MySQL에서 별도의 shell을 제공한다고 한다. 우리는 MySQL Server로 들어가자 mysql.exe 실행mysql.exe를 실행하자. 이때 ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: N) 와 같이 에러 메세지가 출력된다. m..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. 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..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 싱글톤은 인스턴스를 하나만 가질수 있는 클래스이다. 따라서 유일성이 보장되야하는 객체나 무상태(특정 클라이언트에 의존하는 필드가 없는 것) 객체에 싱글톤을 활용할 수 있다. 요새에는 스프링에서 빈과 같은 싱글톤 패턴을 지원하고 있어서 이에 대해 크게 신경쓰지 않고 있었다. 그러나 그 이전에 자바에서 싱글톤 패턴을 구현해야한다면 어떻게 해야할까? 이전 아이템 1에서 우리는 정적 팩터리 메서드를 활용하면 싱글톤으로 인스턴스를 관리할 수 있음을 확인했다. 책에서는 다음과 같은 방법으로 싱글톤 객체 구현을 추천하고 있다. 1. private 생성자 + ..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. 1. 도커(Docker) 도커란 컨테이터라는 새로운 개념을 통해 응용 소프트웨어를 개발OS와 독립시키서 개발할 수 있게 해주는 프로젝트이다. 이때 기존의 가상화 방법과 다르게 컨테이너가 커널을 공유함과 동시에 필요한 리소스들만 가지고 있어 상대적으로 가상머신을 사용하는 것 보다 가벼운 용량을 지원한다. 2. 설치 환경 본인 환경: window 10 (19045.3803), WSL2 도커에서 명시한 개발환경과 동일하여 기존의 개발환경에 도커 데스크탑을 설치 https://docs.docker.com/desktop/install/windows-install/ Install Docker Desktop on Win..