권한 계층구조 관련 질문
- 작성자 :
- 김*훈
- 작성일 :
- 2016-08-10 16:21:26
- 조회수 :
- 918
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
기존에 샘플에서 제공되는 권한 계층구조는 1:1 구조로 되어있던데요 일부 권한을 1:다수 구조로 사용하고 싶습니다.
ROLE_USER(일반 사용자), ROLE_ENTERPRISE(기업 사용자)로 동일한 계층에서 구분하여 사용하고 싶은데
이렇게 사용시 두개에 권한에 동일한 ROLE을 부여했을 시 둘중 하나만 적용이 됩니다.
예) 일반 사용자, 기업 사용자에 /test URL 접근 롤 부여 시 둘중 하나만 /test 접근 가능 나머지 하나는 Access is denied 발생
이해를 돕고자 구현하고자 하는 권한 관련 데이터 SQL도 첨부합니다.
/* 권한 계층 구조 데이터 */
Insert into COMTNROLES_HIERARCHY (PARNTS_ROLE,CHLDRN_ROLE) values ('ROLE_ANONYMOUS','IS_AUTHENTICATED_ANONYMOUSLY');
Insert into COMTNROLES_HIERARCHY (PARNTS_ROLE,CHLDRN_ROLE) values ('IS_AUTHENTICATED_ANONYMOUSLY','IS_AUTHENTICATED_REMEMBERED');
Insert into COMTNROLES_HIERARCHY (PARNTS_ROLE,CHLDRN_ROLE) values ('IS_AUTHENTICATED_REMEMBERED','IS_AUTHENTICATED_FULLY');
Insert into COMTNROLES_HIERARCHY (PARNTS_ROLE,CHLDRN_ROLE) values ('IS_AUTHENTICATED_FULLY','ROLE_ENTERPRISE');
Insert into COMTNROLES_HIERARCHY (PARNTS_ROLE,CHLDRN_ROLE) values ('IS_AUTHENTICATED_FULLY','ROLE_USER');
Insert into COMTNROLES_HIERARCHY (PARNTS_ROLE,CHLDRN_ROLE) values ('ROLE_ENTERPRISE','ROLE_ADMIN');
Insert into COMTNROLES_HIERARCHY (PARNTS_ROLE,CHLDRN_ROLE) values ('ROLE_USER','ROLE_ADMIN');
/* 접근 제한 추가 */
Insert into COMTNROLEINFO (ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) values ('web-000004', '테스트', '/test, '테스트 사용 제한', 'url', '1', sysdate);
/* 권한 롤 매핑 */
Insert into COMTNAUTHORROLERELATE (AUTHOR_CODE,ROLE_CODE,CREAT_DT) values ('ROLE_USER','web-000004',sysdate);
Insert into COMTNAUTHORROLERELATE (AUTHOR_CODE,ROLE_CODE,CREAT_DT) values ('ROLE_ADMIN','web-000002',sysdate);
ROLE_USER(일반 사용자), ROLE_ENTERPRISE(기업 사용자)로 동일한 계층에서 구분하여 사용하고 싶은데
이렇게 사용시 두개에 권한에 동일한 ROLE을 부여했을 시 둘중 하나만 적용이 됩니다.
예) 일반 사용자, 기업 사용자에 /test URL 접근 롤 부여 시 둘중 하나만 /test 접근 가능 나머지 하나는 Access is denied 발생
이해를 돕고자 구현하고자 하는 권한 관련 데이터 SQL도 첨부합니다.
/* 권한 계층 구조 데이터 */
Insert into COMTNROLES_HIERARCHY (PARNTS_ROLE,CHLDRN_ROLE) values ('ROLE_ANONYMOUS','IS_AUTHENTICATED_ANONYMOUSLY');
Insert into COMTNROLES_HIERARCHY (PARNTS_ROLE,CHLDRN_ROLE) values ('IS_AUTHENTICATED_ANONYMOUSLY','IS_AUTHENTICATED_REMEMBERED');
Insert into COMTNROLES_HIERARCHY (PARNTS_ROLE,CHLDRN_ROLE) values ('IS_AUTHENTICATED_REMEMBERED','IS_AUTHENTICATED_FULLY');
Insert into COMTNROLES_HIERARCHY (PARNTS_ROLE,CHLDRN_ROLE) values ('IS_AUTHENTICATED_FULLY','ROLE_ENTERPRISE');
Insert into COMTNROLES_HIERARCHY (PARNTS_ROLE,CHLDRN_ROLE) values ('IS_AUTHENTICATED_FULLY','ROLE_USER');
Insert into COMTNROLES_HIERARCHY (PARNTS_ROLE,CHLDRN_ROLE) values ('ROLE_ENTERPRISE','ROLE_ADMIN');
Insert into COMTNROLES_HIERARCHY (PARNTS_ROLE,CHLDRN_ROLE) values ('ROLE_USER','ROLE_ADMIN');
/* 접근 제한 추가 */
Insert into COMTNROLEINFO (ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) values ('web-000004', '테스트', '/test, '테스트 사용 제한', 'url', '1', sysdate);
/* 권한 롤 매핑 */
Insert into COMTNAUTHORROLERELATE (AUTHOR_CODE,ROLE_CODE,CREAT_DT) values ('ROLE_USER','web-000004',sysdate);
Insert into COMTNAUTHORROLERELATE (AUTHOR_CODE,ROLE_CODE,CREAT_DT) values ('ROLE_ADMIN','web-000002',sysdate);
A
김병훈님, 안녕하세요.
보통 계층구조는 ROLE_ANONYMOUS → IS_AUTHENTICATED_ANONYMOUSLY → IS_AUTHENTICATED_FULLY → IS_AUTHENTICATED_REMEMBERED → ROLE_RESTRICTED → ROLE_USER → ROLE_ADMIN 의 순으로 정의되어 있습니다.
현재 ROLE_USER와 ROLE_ENTERPRISE는 동일하게 IS_AUTHENTICATED_FULLY를 상속받은 권한을 가지고 있는 것으로 보이는데, 권한 설정에서 ROLE_USER의 권한을 동일하게 ROLE_ENTERPRISE에도 추가시켜줘야하는 부분이 있습니다.
좀더 간편한 방법으로 ROLE_USER와 ROLE_ENTERPRISE의 권한을 동일하게 맞추고 싶으실 경우, ROLE_ENTERPRISE의 권한은 따로 설정하지 마시고, 계층 구조만 ROLE_USER의 자식으로 ROLE_ENTERPRISE를 추가해 보시기 바랍니다.
자식이 부모의 권한을 상속받는 구조로 되어 있으므로, 이 경우 ROLE_USER의 권한은 그대로 상속 받으면서, ROLE_ENTERPRISE의 추가 권한을 따로 설정하지 않는다면 결과적으로 ROLE_USER와 같은 권한을 가지게 됩니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v2:sec:%EA%B6%8C%ED%95%9C%EA%B4%80%EB%A6%AC
감사합니다.
보통 계층구조는 ROLE_ANONYMOUS → IS_AUTHENTICATED_ANONYMOUSLY → IS_AUTHENTICATED_FULLY → IS_AUTHENTICATED_REMEMBERED → ROLE_RESTRICTED → ROLE_USER → ROLE_ADMIN 의 순으로 정의되어 있습니다.
현재 ROLE_USER와 ROLE_ENTERPRISE는 동일하게 IS_AUTHENTICATED_FULLY를 상속받은 권한을 가지고 있는 것으로 보이는데, 권한 설정에서 ROLE_USER의 권한을 동일하게 ROLE_ENTERPRISE에도 추가시켜줘야하는 부분이 있습니다.
좀더 간편한 방법으로 ROLE_USER와 ROLE_ENTERPRISE의 권한을 동일하게 맞추고 싶으실 경우, ROLE_ENTERPRISE의 권한은 따로 설정하지 마시고, 계층 구조만 ROLE_USER의 자식으로 ROLE_ENTERPRISE를 추가해 보시기 바랍니다.
자식이 부모의 권한을 상속받는 구조로 되어 있으므로, 이 경우 ROLE_USER의 권한은 그대로 상속 받으면서, ROLE_ENTERPRISE의 추가 권한을 따로 설정하지 않는다면 결과적으로 ROLE_USER와 같은 권한을 가지게 됩니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v2:sec:%EA%B6%8C%ED%95%9C%EA%B4%80%EB%A6%AC
감사합니다.