해결된 질문
작성
·
438
·
수정됨
1
안녕하세요, 우선 좋은 내용의 강의 감사드립니다.
이어 Spring Security 계층 권한 설정 방법에 대해 아래와 같이 몇 가지 질문을 드리고자합니다.
[질문 항목]
DB를 사용해서 계층 권한 테이블
을 선언하고 부모, 자식 관계의 권한 데이터(row)를 등록해 놓은 상황에서 프로그램을 실행시키게 되면 현재 이 계층 권한 테이블에 있는 데이터에 한해서만 Security 권할 설정이 이루어지는 것인가요? 만약, 추후 DB에 직접 새로운 계층 권한 정보
가 등록된다면 해당 프로그램이 재시작
되어야만 변경된 계층 권한 정보가 동기화되는 것인가요?
1번 항목과 비슷한 맥락으로 한 회원이 서비스 이용중 자신의 권한이 사이트 관리자에 의해 변경되었다면 변경된 권한이 적용되는 시점에 대해서도 궁금합니다.
Spring Security 기본 정책(?)상 계층 권한을 나타낼 때에는 문자열 형태로 권한 관계를 >
를 사용하여 표기하는 것을 볼 수 있었는데요. 이렇게 문자열 형태가 아닌 다른 형태(예를 들어 Map 등)
로도 표기가 가능한가요? 만약, 이런 설정 방법이 존재한다면 가이드를 제공해주실 수 있을까요?
아직 강의를 완강한 것이 아니기에 질문 내용이 부족한점 양해드리며, 미리 답변 감사드립니다.
답변 2
1
1번, 2번
DB 에서 관리하게 되면 서버를 재시작 할 필요는 없지만 한 가지 조건이 있습니다.
DB 의 내용이 변경될 때마다 권한 계층이나 권한을 적용해야 하는 메서드 다시 호출해 주면 됩니다.
이 부분은 웹 기반 인가처리 실시간 반영하기 챕터를 참고하시면 됩니다.
3번
'>' 표시는 기본적으로 시큐리티에서 정해 놓은 규칙이긴 하지만 RoleHierarchy 인터페이스를 직접 구현하면 가능은 합니다.
제가 직접 해 보지는 않았지만 어떤 블로그에서 이와 관련된 내용으로 변경하는 예제를 본적이 있습니다.
https://devwithpug.github.io/spring/spring-security-3/
를 참고해 보시기 바랍니다.
1
안녕하세요, 인프런 AI 인턴입니다.
Henu님께서 질문하신 스프링 시큐리티의 계층 권한 설정에 대해 답변드리겠습니다.
스프링 시큐리티에서 계층 권한 설정은 일반적으로 애플리케이션의 시작 시점에 메모리에 로드되어 구성됩니다. 따라서 DB에 새로운 계층 권한 정보가 추가되는 경우 해당 정보를 실시간으로 반영하기 위해서는 프로그램을 재시작하거나, 동적으로 계층 권한 정보를 갱신할 수 있는 구현이 필요합니다. Spring Security 자체에서는 DB 변경 사항을 자동으로 감지해 실시간으로 업데이트하는 기능을 기본적으로 제공하지 않으므로, 이를 위한 추가적인 구성이 필요합니다.
회원의 권한 변경이 이루어질 경우, 변경된 권한이 적용되는 시점은 애플리케이션 또는 Spring Security의 구성에 따라 다를 수 있습니다. 권한이 변경된 후에도 사용자의 세션에는 이전 권한이 남아있을 수 있으며, 변경된 권한을 적용하기 위해서는 해당 사용자의 세션을 강제로 만료시키거나 재인증을 거치게 하는 등의 조치가 필요할 수 있습니다. 이는 보안 요구사항과 사용하는 시큐리티 구성에 따라 다양한 접근 방법이 존재합니다.
권한 관계를 표현하는 방법은 문자열 형태로 >
기호를 사용하는 것 외에도 다른 방법으로 커스텀할 수 있습니다. 예를 들어, RoleHierarchy
의 구현체를 직접 정의하여 계층 권한을 관리하거나, Map
을 사용해 계층 구조를 구성하는 등 다양한 방식을 적용할 수 있습니다. 이와 관련한 자세한 가이드나 예제는 스프링 공식 문서나 관련 커뮤니티, 예제 코드 등을 참조하시는 것이 좋을 것 같습니다.
추가적으로 Spring Security에 대해 더 깊이 알고 싶으시다면 스프링 프로젝트 페이지나 공식 문서를 참조하시길 추천드립니다:Spring Security project page.
도움이 되셨기를 바라며, 궁금한 점에 대한 추가적인 답변이 필요하시면 언제든지 질문해주시기 바랍니다. 감사합니다.