본문 바로가기

Spring10

Authentication 메커니즘 인증 ( Authentication ) Authetication은 인증된 결과만 저장하는 것이 아니고, 인증을 하기 위한 정보와 인증을 받기 위한 정보가 하나의 객체에 동시에 들어있다. 인증을 제공해 줄 제공자(AuthenticationProvider)가 어떤 인증에 대해서 허가를 내줄 것인지 판단하기 위해서는 직접 입력된 인증을 보고 허가된 인증을 내주는 방식이기 때문이다. AuthenticationProvider는 처리 가능한 Authentication에 대해 알려주는 support 메소드를 지원하고, authentication()에서 Authentication을 입력값과 출력밧으로도 사용한다. Credentials : 인증을 받기 위해 필요한 정보, 비번등 (input) Principal : 인증된.. 2022. 6. 11.
기본 실습 설계 index.html에 접속해서 로그인 시도를 한다. user권한이 있을 경우 "/user-page"로 접속하고, admin권한이 있는 경우 "/admin-page"로 접속한다. 소스코드 Back-End Spring Security를 configuration하기 위해서는 WebSecurityConfigurerAdapter를 상속받고, configure를 overriding해준다. @EnableWebSecurity(debug = true) @EnableGlobalMethodSecurity(prePostEnabled = true) public class SecurityConfig extends WebSecurityConfigurerAdapter { private final CustomAuthDetails.. 2022. 6. 5.
Entity의 기본속성 @Entity @Entity 객체를 persistence상태로 만들어준다. @Id @Id 자바 필드를 pk로 만들어 준다. @GeneratedValue @GeneratedValue 자동적으로 생성할 번호를 붙여준다. public enum GenerationType { /** * Indicates that the persistence provider must assign * primary keys for the entity using an underlying * database table to ensure uniqueness. */ TABLE, /** * Indicates that the persistence provider must assign * primary keys for the entity usi.. 2022. 6. 5.
JPA Repository JPA Repository란? 데이터를 crud할 수 있도록 기본적인 interface를 제공한다. JPA 다이어그램 구조 Repository @Indexed 어노테이션만 있는 interface이다. Repository를 상속받은 class나 interface에 indexing을 해준다. CrudRepository 기본적인 crud에 관련된 메서드들이 정의되어 있는 interface이다. PagingAndSortingRepository Crud에 Page와 Sort기능을 추가한 interface이다. JpaRepository 상위 Interface의 모든 기능을 포함한다. 2022. 6. 5.
Spring Cloud란? Spring Cloud란? Spring Cloud란 분산시스템에서 환경이나 서비스 등.. 일반적인 패턴을 빠르게 빌드하는 툴이다. 분산시스템의 코디네이션은 boiler plate패턴을 리드하는 것이고 이 패턴을 구현함으로 서비스나 어플레이션을 빠르게 준비시키는 것이다. Features Distributed/versioned configuration Service registration and discovery Routing Service-to-service calls Load balancing Circuit Breakers Global locks Leadership election and cluster state Distributed messaging 웹서비스 확장 전략 실무 개발 유형 솔루션 개발 : .. 2022. 6. 5.
폼 로그인 로그인 하기 스프링 프레임워크에서 로그인을 한다는 것은 authenticated 가 true인 Authentication 객체를 SecurityContext 에 갖고 있는 상태이다. (단, Authentication이 AnonymousAuthenticationToken 만 아니면 된다.) 로그인 == Authentication(authenticated = true) only if Authentication != AnonymousAuthenticationToken Authentication (인증)의 기본 구조 인증 토큰(Authentication)을 제공하는 필터들 UsernamePasswordAuthenticationFilter : 폼 로그인 -> UsernamePasswordAuthentication.. 2022. 5. 30.
SpringSecurity구조 Spring Security 큰 그림 톰켓과 같은 웹 애플리케이션을 서블릿 컨테이너라고 부르는데, 이런 웹 애플리케이션(J2EE Application)은 기본적으로 필터와 서블릿으로 구성되어 있습니다. 모든 Request들은 모든 필터를 차례대로 거친 다음 Servlet에 도착하게 된다. DelegatingFilterProxy 필터체인은 반드시 한개 이상이고, url패턴에 따라 적용되는 필터체인을 다르게 할 수 있다. 위 그림 처럼 /api/하위 FilterChain과 /admin/하위 FilterChain이 다를 수 있다. 만약에 공유하고 있다면 모든 FilterChain을 통과해야 하는 단점이 생긴다. proxy가 메인 필터 체인에 있고, proxy 하위에 SecurityFilterChain그룹을 등.. 2022. 5. 30.
Spring Security Spring Security 웹사이트는 각종 서비스를 하기 위한 리소스와 서비스를 사용하는 유저들의 개인 정보를 가지고 있다. 이들 리소스를 보호하기 위해서 일반적으로 웹 사이트는 두가지 보안 정책을 설정해야 합니다. 1. 서버 리소스 2. 유저들의 개인정보 이러한 개인정보를 보호하기 위해 개발자를 서포트 해주는 것이 Spring Security다. 관심을 가지고 있는 것은 2가지 이다. 인증 : 사용자가 누구인지 권한 : 어떤 권한을 가지고 있는지 인증(Authentication) 싸이트에 접근하는 사람이 누구인지 시스템이 알아야 한다. 익명사용자를 허용하는 경우도 있지만, 특정 리소스에 접근하거나 개인화된 사용성을 보장 받기 위해서는 반드시 로그인하는 과정이 필요하다. 로그인은 보통 username .. 2022. 5. 30.
Entity 영속성 컨텍스트 영속성 컨텐스트란 엔티티를 영구 저장하는 환경이라는 뜻이다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 캐시 Request가 와서 데이터를 조회 할 때 Key로 조회한다면 1차캐시를 먼저 찾지만 Key가 아니면 DB에서 새로 조회한다. 1차 캐시에 존재한다면 데이터를 불러오고 없다면 DB를 새로 조회한다. Entity 생명주기 비영속(new/transient) 엔티티 객체를 생성했지만 아직 영속성 컨텍스트에 저장하지 않은 상태를 비영속(new/transient)라 한다. @Autowired @Transient private Use.. 2022. 5. 29.
JPA Programming ORM(Object Relational Mapping)이란? DB와 application간에 데이터 접근 및 조작을 하기 위해서 java object와 DB사이를 mapping해 줄 수 있는 layer가 필요하다. 이 다리 역할을 해주는 것이 Object Relational Mapping, ORM, 이다. Spring Framework는 JPA, Hibernate, DAO와 transaction을 통합하여 관리 할 수 있도록 지원해준다. Spring Framework의 장점 Easier testing. IoC접근은 Hibernate SessionFactory instances, JDBC DataSource instances, transaction managers, and mapped object의 설정과.. 2022. 5. 1.