이 강의에서는
우리의 웹 애플리케이션 내에
인가 규칙을 강제하는 것을 알아보고자 합니다
이를 위해 먼저
hasAuthority와 hasAnyAuthority 메소드를 사용한
코드를 모두 주석 처리하겠습니다
이 코드를 주석 처리하고 나면
또 같은 코드를 붙여 넣습니다
그리고 오른쪽 정렬로 맞춥니다
자 여기서 hasAuthority 대신에
hasRole 메소드를 호출합니다
동일한 것을 다른 위치에서 수정하겠습니다
그리고 비슷하게 hasAnyAuthority를
hasAnRrole로 수정하여야 합니다
더 나아가 이 메소드를 불러 옵니다
우리는 권한의 이름들을
역할 이름으로 변경해야 할 필요도 있습니다
여기서 첫 번째 소개하고 싶은 역할 이름은
USER 입니다
다른 부분에도 똑같이 붙여 넣어봅시다
VIEWBALANCE는 ADMIN으로 변경할 수 있습니다
이제 데이터베이스 내에 USER와 ADMIN 이라는
역할을 생성했습니다
지난 번에 설명했듯이
이런 경우에는 접두사 ROLE_이 Spring Security 프레임워크 안에
필요 없습니다
그 이유는 hasRole 또는 hasAnyRole과
같은 메소드 중 하나를 확인하면
필요한 역할을 나타내는
노트가 명확하게 표시되어 있기 때문입니다
자동으로 ROLE_로 시작해야 하는
필수 역할을 나타내기 때문에
ROLE_로 시작해서는 안됩니다
내 프레임워크는 ProjectSecurityConfig 클래스 내에서
전달하는 역할 이름에 이 접두사를 추가하기 때문입니다
정의한 데이터베이스 내의 역할 이름과
동일한 역할 이름을
ProjectSecurityConfig 클래스 내에서
언급하지 않는 이유는 이제 충분히 이해 되셨을 것으로 생각합니다
이로써 진행한 모든 변경 사항도
이해가 되셨을 것입니다
변경 사항을 저장하고 여기서 빌드를 합니다
이제 UI 애플리케이션으로 가서
엔드 유저 Happy로 로그인을 시도합니다
우리가 엔드 유저 Happy에게
USER 와 ADMIN의 역할을 구성하였기 때문에
그는 모든 API에 접근할 수 있습니다
웹 애플리케이션 내에서
happy@example.com의 자격 증명으로 로그인을 시도합니다
비밀번호는 12345 입니다
제 대시보드 안에서 모든 기능들에
액세스 해보겠습니다
Account 정보는 올바르게 보여지고 있습니다
Balance도 똑같이 확인해 봅니다
Balance와 transaction 세부정보도
올바르게 나타납니다
이제 Loans 를 눌러 봅니다
Loans 또한 제대로 실행되고 있으며
Cards도 확인해 봅니다
Cards의 세부정보도 올바르게 나타나며
따라서 모든 것이 정상적으로 작동하고 있습니다
로그아웃 합니다
부정적인 시나리오를 확인해보기 위해
myCards API에게
MANAGER라는 역할 이름을 부여 합니다
그리고 이 이름은 엔드 유저 Happy에게
데이터베이스 내에서 구성되어 있지 않습니다
이 변경 사항으로 인해 엔드 유저는
성공적인 응답을 얻지 못할 것입니다
이 변경사항을 저장하고 빌드를 합니다
다시 happy@example.com 과 12345 로
로그인을 시도합니다
이렇게해서 우리는 애플리케이션에
성공적으로 로그인 했고
바로 Cards를 클릭하면
아무런 응답을 얻지 못하고 있음을 볼 수 있습니다
여기 콘솔을 확인하면
금지된 에러인 403이 뜨고 있는 것을 확인할 수 있습니다
이것은 역할의 도움을 받아
구성한 인가 규칙이
완벽히 작동하고 있음을 보여줍니다
수동으로 API를 호출하여 빠르게 유효성을 검사할 수도 있습니다
예를 들면 myAccount?id = 1 입니다
따라서 액세스하면 같은 브라우저에 이미 로그인 되어있고
바로 응답을 받게 됩니다
myCards에 액세스 합니다
myCards의 경우 금지된 에러
403이 뜹니다
따라서 우리의 부정적 시나리오 또한 완벽히 작동함을 알 수 있습니다
이제 부정적인 시나리오 변경 사항을 되돌려
웹 애플리케이션 내의
모든 API에 최종 사용자가
액세스할 수 있도록 해보겠습니다
이렇게 우리는 권한과 역할 관련 메소드를 활용하여
인가에 관한 모든 이야기를
마쳤습니다
여기서 완료하고 싶은 마지막 작업은
이러한 스크립트를 모두 가져와서
script.sql 문서에 동일하게 기술하여
여러분에게도 이러한 스크립트를 제공하고
테스트에 활용할 수 있도록 하는 것입니다
스크립트를 붙여 넣었습니다
scripts.sql 이제 우리가
이 섹션 내에서
이야기 했던 모든 스크립트로 업데이트 되었습니다
평소와 같이
여기서 짚고 가고 싶은 정보는
GitHub 리포지터리 입니다
GitHub 리포지터리에서
이 폴더 안에
섹션 7에서 이야기한 모든 코드를 업로드 해두었습니다
섹션 7을 누르면
backend Maven project 만 보이고
UI 코드는 보이지 않을 것입니다
이것은 우리가 이 섹션 내에
UI 관련 수정을 하지 않았기 때문입니다
우리가 변경한 사항들은 오직
Spring Boot 웹 애플리케이션에서만 이루어졌습니다
만약 어떤 문제나 오류가 있다면
이 섹션 7 내의 코드를 참조해주십시오
그리고 섹션 7 내에서
권한과 역할을 활용하여 인가를 실행하였다는
주석을 언급한 것을
확인할 수 있습니다
이렇게 해서 저는 우리가
인증과 인가에 대해
모두 이해할 수 있게 되었다는 사실과
이것을 웹 애플리케이션에서 실행했다는 것이 매우 기쁩니다
특히 웹 애플리케이션 내에서 진행되는 작업에 관해서는
진전이 있다고 생각하고 있습니다
우리는 단계별로
우리의 웹 애플리케이션을 향상시키고 있습니다
그리고 이 과정에서 우리는 Spring Security의 구성요소도
살펴보고 있습니다
감사합니다 다음 섹션에서 뵙겠습니다
수고하셨습니다