분류 전체보기
-
[스프링 인 액션] Chapter 5 - 구성 속성 사용하기 :: 프로파일 사용해서 구성하기개발서적읽기/Spring in Action 제 5판 2020. 7. 31. 01:22
애플리케이션이 서로 다른 런타임 환경에 배포, 설치될 때는 대개 구성 명세가 달라진다. 이때 각 환경의 속성들을 application.yml에도 설정할 수 있고 또한 운영체제의 환경 변수를 사용해서 설정할 수도 있다. 하지만 하나 이상의 구성 속성을 환경 변수로 지정하는 것은 번거롭다. 게다가 환경 변수의 변경을 추적 관리하거나 오류가 있을 경우에 변경 전으로 바로 되돌릴 수 있는 방법이 마땅치 않다. 따라서 스프링 프로파일을 이용하는 것이 선호된다. 런타임 시에 활성화되는 프로파일에 따라 서로 다른 빈, 구성 클래스, 구성 속성들이 적용 또는 무시되도록 하는 것이 프로파일이다.예를 들어, 개발과 디버깅 목적으로 내장 H2 DB를 사용하고 타코 클라우드 코드의 로깅 수준을 DEBUG로 설정한다고 해보자...
-
[스프링 인 액션] Chapter 5 - 구성 속성 사용하기 :: 우리의 구성 속성 생성하기개발서적읽기/Spring in Action 제 5판 2020. 7. 31. 01:22
스프링 빈에서는 구성 속성들을 어떻게 사용할까? 스프링 빈에 구성 속성을 주입하기 위해 스프링 부트는 @ConfigurationProperties 애노테이션을 제공한다. 그리고 어떤 스프링 빈이건 이 애노테이션이 지정되면 해당 빈의 속성들이 스프링 환경의 속성으로부터 주입될 수 있다. @ConfigurationProperties가 어떻게 동작하는지 알아보기 위해 다음의 ordersForUser 메서드를 OrderController에 추가하자.@GetMapping public String ordersForUser(@AuthenticationPrincipal User user, Model model) { model.addAttribute("orders", orderRepo.findByUserOrderByPl..
-
[스프링 인 액션] Chapter 5 - 구성 속성 사용하기 :: 자동-구성 세부 조정하기개발서적읽기/Spring in Action 제 5판 2020. 7. 31. 01:22
자동 - 구성(auto configuration)은 스프링 애플리케이션 개발을 단순화해 준다. 스프링 XML 구성으로 속성 값을 설정하던 지난 10년간은 명시적으로 빈을 구성하지 않고는 속성을 설정하는 마땅한 방법이 없었다. 다행스럽게도 스프링 부트는 구성 속성(configuration property)을 사용하는 방법을 제공한다. 스프링 애플리케이션 컨텍스트에서 구성 속성은 빈의 속성이다. 그리고 JVM 시스템 속성, 명령행 인자, 환경 변수 등의 여러 가지 원천 속성 중에서 설정할 수 있다. 이 장에서는 타코 애플리케이션에 새로운 기능을 구현하는 것을 잠시 멈추고 구성 속성의 이모저모를 살펴볼 것이다. 구성 속성을 알아 두면 이후의 진도를 나가는 데 확실히 도움이 되기 때문이다. 우선 스프링 부트가 ..
-
[스프링 인 액션] Chapter 4 - 스프링 시큐리티 :: 각 폼에 로그아웃 버튼 추가하고 사용자 정보 보여주기개발서적읽기/Spring in Action 제 5판 2020. 7. 30. 16:03
마지막으로, 로그아웃 버튼과 사용자 정보를 보여주는 필드를 각 폼에 추가할 것이다. 우선, 사용자가 타코를 생성할 수 있는 디자인 페이지로 이동하는 참조와 로그아웃 버튼을 home.html에 추가하자. Taco Cloud Welcome to... Design a taco 다음으로, 사용자가 원하는 타코를 생성할 수 있는 디자인 페이지에 로그아웃 버튼을 추가하자. design.html 페이지를 수정하자. Taco Cloud Design your taco! Feelin' hungry, NAME? Ingredient Error Designate your wrap: INGREDIENT Pick your protein: INGREDIENT Choose your cheese: INGREDIENT Determine ..
-
[스프링 인 액션] Chapter 4 - 스프링 시큐리티 :: 사용자 인지하기개발서적읽기/Spring in Action 제 5판 2020. 7. 30. 15:55
사용자가 로그인되었음을 아는 정도로는 충분하지 않다. 사용자 경험에 맞추려면 그들이 누구인지 알아야 한다. 예를 들어, OrderController에서 주문 폼과 바인딩되는 Order 객체를 최초 생성할 때 해당 주문을 하는 사용자의 이름과 주소를 주문 폼에 미리 넣을 수 있다면 좋을 것이다. 그러면 사용자가 매번 주문을 할 때마다 다시 입력할 필요가 없기 때문이다. 또한 이보다 더 중요한 것으로, 사용자 주문 데이터를 DB에 저장할 때 주문이 생성되는 User와 Order를 연관시킬 수 있어야 한다.DB에서 Order 개체와 User 개체를 연관시키기 위해서는 Order 클래스에 새로운 속성 User를 추가해야 한다. package tacos; /* * @USER JungHyun * @DATE 2020..
-
[스프링 인 액션] Chapter 4 - 스프링 시큐리티 :: 웹 요청 보안 처리하기개발서적읽기/Spring in Action 제 5판 2020. 7. 30. 13:40
타코를 디자인하거나 주문하기 전에 사용자를 인증해야 한다는 것이 타코 클라우드 애플리케이션의 보안 요구사항이다. 그러나 홈페이지, 로그인 페이지, 등록 페이지는 인증되지 않은 모든 사용자가 사용할 수 있어야 한다. 그러기 위해선 SecurityConfig에서 configure(HttpSecurity)을 사용해야 한다. HttpSecurity를 사용해서 구성할 수 있는 것은 다음과 같다. - HTTP 요청 처리를 허용하기 전에 충족되어야 할 특정 보안 조건을 구성한다. - 커스텀 로그인 페이지를 구성한다. - 사용자가 애플리케이션의 로그아웃을 할 수 있도록 한다. - CSRF 공격으로부터 보호한다. ■웹 요청 보안 처리하기 /design과 /orders의 요청은 인증된 사용자에게만 허용되어야 한다. 그리고..
-
[스프링 인 액션] Chapter 4 - 스프링 시큐리티 :: 스프링 시큐리티 구성하기개발서적읽기/Spring in Action 제 5판 2020. 7. 30. 10:07
장황한 XML 기반의 구성을 포함해서 그동안 스프링 시큐리티를 구성하는 방법은 여러가지가 있었다. 다행스럽게도 최근의 여러 스프링 시큐리티 버전에서는 훨씬 더 알기 쉬운 자바 기반의 구성을 지원한다.이번 장이 끝나기 전까지 타코 클라우드 보안의 모든 요구사항은 자바 기반의 스프링 시큐리티 구성으로 구현하게 될 것이다. 우선 기본 구성 클래스를 작성해보자.package tacos.security; /* * @USER JungHyun * @DATE 2020-07-30 * @DESCRIPTION */ import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org..
-
[스프링 인 액션] Chapter 4 - 스프링 시큐리티 :: 스프링 시큐리티 활성화하기개발서적읽기/Spring in Action 제 5판 2020. 7. 30. 09:50
스프링 애플리케이션의 보안에서 맨 먼저 할 일은 스프링 부트 보안 스타터 의존성을 빌드 명세에 추가하는 것이다. org.springframework.boot spring-boot-starter-security org.springframework.security spring-security-test test 그리고 서버 실행 후 http://localhost:8080/login 페이지를 접속하면 이러한 스프링 시큐리티 기본 인증 대화상자가 나타난다. Username : user Password : Using generated security password: 8ad67f80-bd2a-4e33-a9bf-219ee4e2609f (Password는 콘솔창에 나와있다) 한번 접속해보자.스프링 시큐리티가 어떤 보안..