클라이언트들을 위해 모든 요청을 거부한 것처럼
웹 애플리케이션에서
모든 API가 접근할 수 있도록
허용하고 싶다는 요구를 받을 때도 있습니다
denyAll에 비하면
이것은 가장 일반적인 시나리오입니다
여러분의 API가 하위 환경에서
특히 개발과 테스트 환경에서
어떠한 보안 없이 접근할 수 있도록
여러분에게 요청하는 경우가 많기 때문입니다
반면에 운영 단계에서는
클라이언트가 사용자 정의 보안 요구사항을
적용하고자 하는겁니다
이런 시나리오에서는 앞에서 말씀드렸듯이
두 가지 SecurityFilterChain @Bean을 두 개 생성해야 합니다
하나의 bean은
운영 환경에서 활성화되고
다른 하나는 모든
비운영 환경에서 활성화됩니다
어떻게 해야 할까요?
Spring Boot 프로필의 도움을 받아야 합니다
전에 말했듯이 Spring Boot 프로필의 도움을 받아
여러분의 웹 애플리케이션이 배포되는
현재 환경에 따라 조건적으로
bean을 생성할 수 있습니다
그럼 여러분의 웹 애플리케이션에서
모든 것을 허용하기 위한 방법으로 돌아와
denyAll 메소드와 같이
permitAll 메소드가 있는데 anyRequest 메소드
다음에 호출해야 합니다
아주 간단하지만
이건 모든 운영 애플리케이션에
추천하는 바는 아닙니다
그래서 여기에 NOT RECOMMENDED FOR PRODUCTION (운영에 권장하지 않음)이라는
스탬프가 있는 겁니다
그럼 우리의 웹 애플리케이션을 수정하고
작동 방식의 유효성을 검사해보겠습니다
여기 ProjectSecurityConfig 클래스에서
이 denyAll 코드 전체를 가져다가
다시 붙여넣기를 할 겁니다
permitAll 관련해서 수정하기 전에
denyAll 코드를 주석으로 달겠습니다
다음으로 이 주석을 모든 요청을
허용하는 설정이라고 수정하겠습니다
앞에서 말했듯이 여기서 denyAll 대신
permitAll 메소드를 호출해야 하는데 이 작은 수정으로 인해
여러분의 모든 API는 아무런 보안 없이 노출될 겁니다
브라우저 안의 API를 테스트해서 이 부분을
확인할 수도 있습니다
이 브라우저에서
공지사항 API에 먼저
접근해보겠습니다
제대로 된 응답을 반환하고 있습니다
문의하기에서도 똑같이 제대로 된 응답을 반환하고
myAccount에 접근해볼건데
여기서도 응답이 옵니다
다음 API는 여러분이 말하는 걸 호출해보겠습니다
어떤 API를 호출해볼까요?
이야기해 보십시오 듣고 있습니다
myCards를 호출했으면 좋겠다는 것이군요
보시다시피 myCards를 호출합니다
여기서도 백엔드 애플리케이션으로부터
제대로 된 응답을 반환합니다
이것 permitAll의 유용성입니다
여기를 보시면
몇 가지 보안 설정 버전을 이야기했는데
첫 번째 버전은
우리가 프레임워크 내에서 봤던
기본 동작이고 그 다음
우리가 살펴본 버전은
보안과 공개 API를 혼합한
사용자 정의 설정입니다
세 번째 버전은 모든 걸 거부하는 것입니다
네 번째 버전은 모든 걸 허용하는 것이었습니다
여러분의 시나리오와 사업 모델에 따라
이 네 가지 버전 중 선택할 수 있습니다
일단은
이 permitAll 설정을 주석으로 달고
이 사용자 정의 설정을 주석 해제하겠습니다
그 이유는 EasyBank 애플리케이션에서
우리는 이러한 요구사항이 있고
추후 강의에서 보안과 공개 API에 대해
더 알아볼 예정이기 때문입니다
그래서 이렇게 코드를 수정하는 겁니다
이것을 끝으로
섹션 2도 마무리했습니다
이 섹션을 종료하기 전에
이 섹션에서 우리가 다룬 코드는 모두
GitHub 리포지터리에 업로드되었다는 점을 강조하겠습니다
github.com/eazybytes/springsecuritysix
이 GitHub 리포지터리에 가시면
여기에 섹션 2 관련 코드를 모두
업로드한 폴더가 있습니다
이 section2를 열면
여러분이 다운로드하고 문제가 있을 때
참고할 수 있는 Maven 프로젝트가 있습니다
다시 돌아가보시면
section2에 대해
이 섹션에서 우리는
사용자 정의 보안 설정
PermitAll, DenyAll 설정을 다뤘다고
주석을 입력해두었습니다
이걸로 저는 우리가 발전하고 있는
과정이 아주 만족스럽습니다
여러분도 우리의 발전 과정에
만족하고 있을 거라 믿습니다
우리가 다룰 더 많은 내용과
고급 개념이 추후 강의에
기다리고 있습니다
좀 쉬고
다음 섹션에서 계속하겠습니다
감사드리고 수고하셨습니다