반응형

IT is True 550

[Spring Security] 스프링 시큐리티 인증 처리 흐름

스프링 시큐리티의 인증 처리 흐름 스프링 시큐리티에서는 스프링 시큐리티 필터 체인을 통해 보안을 위한 특정 작업을 처리한다. 다음은 사용자가 로그인 인증을 위한 요청을 할 경우, 스프링 시큐리티에서 해당 인증 요청을 어떻게 처리하는지에 대한 핵심 컴포넌트들의 인증 처리 흐름이다. 1. 사용자가 로그인을 하기 위해 아이디와 패스워드를 포함한 요청(request)을 보낸다. 사용자 로그인 요청이 들어오면 UsernamePasswordAuthenticationFilter가 해당 요청을 전달받는다. 2. UsernamePasswordAuthenticationFilter는 전달받은 Username과 Password를 이용하여 UsernamePasswordAuthenticationToken을 생성한다. Userna..

[Spring Security] 스프링 시큐리티 DelegatingPasswordEncoder - 암호화 알고리즘 변경하기

DelegatingPasswordEncoder DelegatingPasswordEncoder는 스프링 시큐리티에서 지원하는 PasswordEncoder 인터페이스의 구현 객체를 생성해주는 컴포넌트이다. DelegatingPasswordEncoder를 통해 애플리케이션에서 사용할 PasswordEncoder를 결정하고, 사용자가 입력한 패스워드를 단방향으로 암호화한다. DelegatingPasswordEncoder는 스프링 시큐리티 5.0부터 등장했으며, 이전 버전에서는 평문 텍스트(Plain text) 패스워드를 그대로 사용하는 NoOpPasswordEncoder가 PasswordEncoder의 default로 고정되어 있었다. 하지만, NoOpPasswordEncoder를 사용하면서 발생하는 문제를 해..

[Spring Security] 필터와 필터 체인(Filter Chain) 구현하기

필터(Filter) 서블릿 필터(Servlet Filter)는 서블릿 기반 애플리케이션의 엔드포인트에 요청이 도달하기 전에 해당 요청을 가로채어 특정 처리를 할 수 있도록 해주는 Java 컴포넌트이다. 위 이미지는 서블릿 기반 애플리케이션에서 서플릿 필터의 위치를 나타내고 있다. 클라이언트가 요청을 전송하면 서블릿 필터에서 특정 처리를 한다. 필터에서 모든 처리가 완료된 이후 DispatcherServlet에서 핸들러 매핑 작업을 진행한다. 필터 체인(Filter Chain) 필터 체인은 여러 개의 필터가 체인처럼 엮인 것을 말한다. 모든 요청(request)이 필터 체인을 거친 후에 서블릿 서비스에 도달할 수 있도록 한다. 필터와 필터 체인의 특성 서블릿 필터 체인은 요청 URI path를 기반으로 H..

[Spring Security] 스프링 시큐리티의 구조와 흐름

Intro Spring Security를 구현한 코드의 흐름은 잘 드러나지는 않지만 내부적으로는 Spring Security에서 제공하는 컴포넌트들이 애플리케이션 내부에서 User의 인증과 인가(권한 부여)에 대한 처리를 알아서 해준다. 이처럼 내부에서 일어나는 과정들을 구체적으로 이해하지 못한 상태에서는 Spring Security라는 기술을 이해하는 데 있어 한계에 부딪힐 수 있다. Spring Security를 애플리케이션에 적용하는데 어려움을 겪는 가장 큰 이유 중 하나는 Spring Security의 아키텍처(구조)와 Spring Security의 컴포넌트들이 어떻게 인터랙션해서 인증, 권한 등의 보안 작업을 처리하는지 이해하지 못했기 때문이다. Spring Security의 동작 방식을 이해하..

[Spring Security] 스프링 시큐리티란? - 기능, 용어, 사용하는 이유

Intro 먼저, 실제 애플리케이션에서 보안을 고려하지 않은 상태에서 서비스를 하게 되면 여러 문제가 발생할 수 있다. 인증(Authentication) 수단이 없는 경우 사용자가 해당 서비스를 이용하는 사람이 나 자신임을 증명할 방법이 없다. 다른 사람이 얼마든지 나의 정보를 조회할 수 있으며, API 호출 등을 통해 서비스를 이용할 수 있게 된다. 따라서 사용자가 본인임을 증명할 수 있는 인증 수단이 필요하다. ID와 PASSWORD와 같은 인증 정보를 사용해야 함 인가(Authorization) 기능이 없는 경우 사용자 인증 절차를 통과하더라도 모든 리소스에 접근할 수 있는 것은 아니다. 쇼핑몰을 예로 들면 판매자와 고객 등으로 구분할 수 있을 것이다. 판매자의 경우 상품을 등록하는 리소스를 이용할..

[JPA] JPQL 벌크 연산 - 객체지향 쿼리 언어 JPQL (12)

본 내용은 온라인 강의 사이트 인프런의 김영한 님의 강의 내용이 포함되어 있습니다. '자바 ORM 표준 JPA 프로그래밍 - 기본편' 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 벌크 연산 엔티티를 수정하려면 영속성 컨텍스트의 변경 감지 기능이나 병합을 사용하고, 삭제하려면 엔티티 매니저의 remove() 메서드를 사용한다. 하지만, 이러한 방법으로 수많은 엔티티를 하나씩 처리하기에는 시간이 오래 걸릴 것이다. 예를 들어, 재고가 10개 미만인 모든 ..

[JPA] JPQL Named 쿼리(정적 쿼리) - 객체지향 쿼리 언어 JPQL (11)

본 내용은 온라인 강의 사이트 인프런의 김영한 님의 강의 내용이 포함되어 있습니다. '자바 ORM 표준 JPA 프로그래밍 - 기본편' 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com Intro JPQL 쿼리는 크게 동적 쿼리와 정적 쿼리로 나눌 수 있다. 동적 쿼리 동적 쿼리는 em.createQuery(”select ..”)와 같이 JPQL을 문자로 완성해서 직접 넘기는 것을 동적 쿼리라 한다. 런타임에 특정 조건에 따라 JPQL을 동적으로 구성할 수 ..

[JPA] JPQL 엔티티 직접 사용 - 객체지향 쿼리 언어 JPQL (10)

본 내용은 온라인 강의 사이트 인프런의 김영한 님의 강의 내용이 포함되어 있습니다. '자바 ORM 표준 JPA 프로그래밍 - 기본편' 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 엔티티 직접 사용 - 기본 키 값 객체 인스턴스는 참조 값으로 식별하고 테이블의 행(row)은 기본 키 값으로 식별한다. JPQL에서 엔티티를 직접 사용하면 SQL에서 해당 엔티티의 기본 키 값을 사용한다. 예제 // JPQL select count(m.id) from Mem..

[JPA] JPQL - 다형성 쿼리 - 객체지향 쿼리 언어 JPQL (9)

본 내용은 온라인 강의 사이트 인프런의 김영한 님의 강의 내용이 포함되어 있습니다. '자바 ORM 표준 JPA 프로그래밍 - 기본편' 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 다형성 쿼리 JPQL로 부모 엔티티를 조회하면 자식 엔티티도 함께 조회한다. 다음과 같이 Item의 자식으로 Book, Album, Movie가 있다고 가정한다. (다형성 쿼리 엔티티) 다형성 쿼리 엔티티 Item, Album, Movie, Book @Entity @Inher..

[JPA] JPQL 페치 조인(Fetch join) - 객체지향 쿼리 언어 JPQL (8)

본 내용은 온라인 강의 사이트 인프런의 김영한 님의 강의 내용이 포함되어 있습니다. '자바 ORM 표준 JPA 프로그래밍 - 기본편' 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 페치 조인(Fetch Join) 페치 조인은 JPQL에서 성능 최적화를 위해 제공하는 기능이다. SQL 조인의 종류가 아니다. 연관된 엔티티나 컬렉션을 한 번에 같이 조회하는 기능으로 join fetch 명령어로 사용할 수 있다. 페치 조인 ::= [ LEFT [OUTER] ..

반응형