권한관리
- 작성자 :
- 신*순
- 작성일 :
- 2013-12-05 19:09:24
- 조회수 :
- 860
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
A_ROLE 권한과 B_ROLE 권한이 있습니다.
계층 구조는 아래와 같습니다.
--------------------------------------------------
PARNTS_ROLE || CHLDRN_ROLE
--------------------------------------------------
ROLE_RESTRICTED || A_ROLE
ROLE_RESTRICTED || B_ROLE
A_ROLE || ROLE_USER
B_ROLE || ROLE_USER
ROLE_USER || ROLE_ADMIN
---------------------------------------------------
A_ROLE 권한에 롤 ID 가 web-000011, web-000012 롤을 등록해주고
B_ROLE 권한에 롤 ID 가 web-000012, web-000013 롤을 등록하였습니다.
그랬더니 A_ROLE 권한의 아이디로 접속 시
계층구조는
A_ROLE
ROLE_RESTRICTED
IS_AUTHENTICATED_FULLY
IS_AUTHENTICATED_REMEMBERED
IS_AUTHENTICATED_ANONYMOUSLY
ROLE_ANONYMOUS
이렇게 가져오고 비교 값은 B_ROLE 권한으로 비교를 하더라구요...
제가 궁금한 것은 RoleVoter.class 파일의 vote() 메소드의 iter.hasNext() 값을
롤 권한이 있는 모든 롤을 담고 싶습니다...
어디서 확인하면 될까요?? 확인 부탁 드립니다....
계층 구조는 아래와 같습니다.
--------------------------------------------------
PARNTS_ROLE || CHLDRN_ROLE
--------------------------------------------------
ROLE_RESTRICTED || A_ROLE
ROLE_RESTRICTED || B_ROLE
A_ROLE || ROLE_USER
B_ROLE || ROLE_USER
ROLE_USER || ROLE_ADMIN
---------------------------------------------------
A_ROLE 권한에 롤 ID 가 web-000011, web-000012 롤을 등록해주고
B_ROLE 권한에 롤 ID 가 web-000012, web-000013 롤을 등록하였습니다.
그랬더니 A_ROLE 권한의 아이디로 접속 시
계층구조는
A_ROLE
ROLE_RESTRICTED
IS_AUTHENTICATED_FULLY
IS_AUTHENTICATED_REMEMBERED
IS_AUTHENTICATED_ANONYMOUSLY
ROLE_ANONYMOUS
이렇게 가져오고 비교 값은 B_ROLE 권한으로 비교를 하더라구요...
제가 궁금한 것은 RoleVoter.class 파일의 vote() 메소드의 iter.hasNext() 값을
롤 권한이 있는 모든 롤을 담고 싶습니다...
어디서 확인하면 될까요?? 확인 부탁 드립니다....
A
안녕하세요. 신인순님.
A_ROLE을 가지고 계신 사용자로 로그인 하셨기 때문에 정상적으로 A_ROLE 및 계층 상 상위 롤에 대한 authorities를 갖는 것은 정상입니다.
비교 값은 B_ROLE 권한으로 비교된다라는 의미가 어떤 의미이신지요?
혹, 중복되고 있는 web-000012 패턴에 대하여 B_ROLE을 먼저 비교한다라는 의미이신가요?
이 경우라면 패턴 (web-*) 등록 시에 서로간의 order가 있습니다. (ROLE_SORT 컬럼)
이 값을 통해 어떤 패턴을 먼저 적용할지 결정이 됩니다.
추가적으로 여러 개의 하나만 해당이 되더라도 권한을 획득하는 방식(AffirmativeBased access decision manager)으로 동작하기 때문에 문제가 되진 않으실 것 같습니다.
또한 기본적으로 RoleVoter 상에 rolePrefix 가 "ROLE_"로 등록되기 때문에 롤을 추가하실 때에는 "ROLE_"으로 시작하시는 것이 좋으실 것 같습니다.
마지막으로 Spring Security 자체에 대한 수정은 권장해드리지 않습니다. (해당 부분에 대한 변경 시 표준화의 실효성 상실)
이 때문에 지원해드릴 수 없습니다.
그럼, 즐거운 하루되십시오.
감사합니다.
A_ROLE을 가지고 계신 사용자로 로그인 하셨기 때문에 정상적으로 A_ROLE 및 계층 상 상위 롤에 대한 authorities를 갖는 것은 정상입니다.
비교 값은 B_ROLE 권한으로 비교된다라는 의미가 어떤 의미이신지요?
혹, 중복되고 있는 web-000012 패턴에 대하여 B_ROLE을 먼저 비교한다라는 의미이신가요?
이 경우라면 패턴 (web-*) 등록 시에 서로간의 order가 있습니다. (ROLE_SORT 컬럼)
이 값을 통해 어떤 패턴을 먼저 적용할지 결정이 됩니다.
추가적으로 여러 개의 하나만 해당이 되더라도 권한을 획득하는 방식(AffirmativeBased access decision manager)으로 동작하기 때문에 문제가 되진 않으실 것 같습니다.
또한 기본적으로 RoleVoter 상에 rolePrefix 가 "ROLE_"로 등록되기 때문에 롤을 추가하실 때에는 "ROLE_"으로 시작하시는 것이 좋으실 것 같습니다.
마지막으로 Spring Security 자체에 대한 수정은 권장해드리지 않습니다. (해당 부분에 대한 변경 시 표준화의 실효성 상실)
이 때문에 지원해드릴 수 없습니다.
그럼, 즐거운 하루되십시오.
감사합니다.