현재 웹 애플리케이션 내에서는
엔드 유저의 권한을 저장하고 있습니다
같은 권한들을 사용하여
Spring Boot 웹 애플리케이션 내의
인가를 실행하고자 합니다
비슷하게 Spring Security 프레임워크 내에
사용할 수 있는 메소드가 세 가지 있습니다
첫 번째는 메소드는 hasAuthority() 입니다
몇 초 내에 이러한 메소드를
호출할 수 있는 지점으로 넘어가겠습니다
일단 지금은 이 메소드들을 이해하는 것에 집중해 봅시다
첫 번째 메소드인 hasAuthority()에서는
특정 권한을 엔드포인트 배열 서비스에 대해
구성하여 해당 권한을 가진 사용자만
해당 특정 엔드포인트에
접근할 수 있도록 할 수 있습니다
그러나 만약 특정 REST API 서비스나 혹은 API path를 위해
여러 가지의 권한을 구성하고 싶은
상황이라면
hasAnyAuthority()를 사용하면 됩니다
그래서 두 번째 메소드인 hasAnyAuthority()에서는
여러 가지 권한을 전달하는 것과 같이
권한의 목록을 수락할 수 있습니다
그리고 엔드 유저가 나열된 권한 중
하나라도 가지고 있다면
해당 기능 또는 특정 REST API에 액세스할 수 있어야 합니다
그러지 않으면 403 에러가 뜰 것입니다
마지막 메소드는 access() 입니다
이 access() 메소드를 사용해서는
Spring Expression Language(SpEL)의 도움을 받아
복잡한 인가의 규칙을 구성할 수 있습니다
아마도 여러분은 이러한 권한을 구성할 때
AND, OR 및 NOT과 같은 논리 연산자를
사용하려는 다소 복잡한
요구 사항이 있을 것입니다
따라서 이런 시나리오에서는
SpEL를 사용하여
권한과 조건을 정의하고
access() 메소드를 사용해 인가를 실행할 수 있습니다
이제 웹 애플리케이션 내에
권한을 구성하려고 할 때
어떤 메소드를 호출 해야 할 지에 대한
기본적인 이해를 마쳤습니다
다음 단계로는 어디로부터
이러한 메소드를 호출해야 하는지에 대해 살펴봅시다
hasAuthority(), hasAnyAuthority()
access() 와 같은 메소드들은 Matchers 메소드에 요청한 다음
호출할 수 있습니다
여기서 보이듯이
API path 를 따라
Matchers 메소드에 요청이 완료 되자마자
다음과 같은 인가 메소드들을 호출할 수 있습니다
예를 들어 hasAuthority(), hasAnyAuthority() 그리고 access() 메소드
hasAuthority()에서는 우리는 하나의 권한 세부정보를 전달할 수 있습니다
반면에 hasAnyAuthority()는 여러 가지
권한 세부정보를 받아 들입니다
그리고 만약 hasAuthority() 또는 hasAnyAuthority()를 사용하지 않는다면
단순히 .authenticated() 를 언급할 수 있습니다
이것은 로그인한 누구든 우리의
웹 애플리케이션에 접근할 수 있고
우리가 그 API를 위해 어떤 인가도 실행하지 않는다라는
의미입니다
따라서 여기 슬래시(/) 사용자에게는
어떤 인가도 하지 않고
.authenticated()로 남겨둔 것입니다
나머지 public API들은 건드리지 않습니다
그것들은 여전히 permitAll 이 필요합니다
이 방법으로 Spring Boot 웹 애플리케이션 내에
권한을 구성하거나
인가를 실행할 수 있습니다
다음 강의에서는 이 지식을 토대로
웹 애플리케이션 내에 구현해 보겠습니다
이 작업을 통해 우리가 수행한 구성에 기반하여
인가가 작동하는지 여부를 테스트할 수 있습니다
감사합니다 다음 강의에서 뵙겠습니다 수고하셨습니다