Security 권한관리 재문의 드립니다.
- 작성자 :
- 박*규
- 작성일 :
- 2020-05-20 17:38:13
- 조회수 :
- 2,815
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
//권한그룹 DB 정보( 권한코드 / 권한코드명 )
1. ROLE_ANONYMOUS / 익명사용자
2. ROLE_USER / 사용자
3. ROLE_ADMIN / 관리자
4. ROLE_USER_A / 사용자그룹 A
5. ROLE_USER_B / 사용자그룹 B
//권한계층 DB 정보( PARNTS / CHLDRN )
1. ROLE_ANONYMOUS / ROLE_USER
2. ROLE_USER / ROLE_ADMIN
※ROLE_ADMIN>ROLE_USER>ROLE_ANONYMOUS 순으로 구성
ROLE_USER_A와 ROLE_USER_B는 권한계층 대상에서 제외 함
//역할 DB 정보( ROLE 코드 / ROLE 패턴 / 역할유형 / 역할설명)
1. web-000001 / \A/login/.*\.do.*\Z / url / 로그인 허용을 위한 롤
2. web-000002 / \A.*\.do.*\Z / url / 모든자원에 대한 롤
3. web-000003 / \A/_mng_/usr/reg/.*\.do.*\Z / 사용자등록관리 자원에 대한 롤
//권한역할관계 DB 정보( 권한코드 / ROLE 코드 )
1. ROLE_ANONYMOUS / web-000001 //익명사용자에게 로그인 권한부여
2. ROLE_ADMIN / web-000002 //관리자에게 모든자원 접근권한 부여
설정한 권한관련 DB정보는 위와 같습니다.
계층구조로 잘 동작합니다.
다만 문제는 여기서 발생 합니다.
권한계층 대상에서 제외한 ROLE_USER_A 또는 ROLE_USER_B 에 "web-000003" ROLE을 부여할 경우
해당 ROLE을 부여받은 권한그룹 외 Access Denied가 발생합니다.
모든자원 접근권한을 부여한 ROLE_ADMIN도 마찬가지 Access Denied가 발생하게 됩니다.
앞선 답변 내용을 제가 제대로 이해 못한 것인지 모르겠으나
위와 같은 이슈가 발생하여 계층형이 아닌 단독으로 동작하지 않습니다.
앞선 답변내용 중
"결론부터 말씀드리면
권한이 계층구조가 아니어도 적용이 가능합니다.
계층구조 인경우 다음 빈설정파일에서
sqlHierarchicalRoles 속성에 쿼리가 정의되어 있습니다.
/src/main/resources/egovframework/spring/com/context-security.xml
여기에 ROLE_*로 되어 있는 권한그룹의 계층을 정의할수 있는데
필수는 아닙니다."
를 참고하여 context-security.xml의 sqlHierarchicalRoles 속성 제거 및
해당 속성의 내용을 지워보았으나 서버 기동 시 컴파일 오류가 발생합니다
1. ROLE_ANONYMOUS / 익명사용자
2. ROLE_USER / 사용자
3. ROLE_ADMIN / 관리자
4. ROLE_USER_A / 사용자그룹 A
5. ROLE_USER_B / 사용자그룹 B
//권한계층 DB 정보( PARNTS / CHLDRN )
1. ROLE_ANONYMOUS / ROLE_USER
2. ROLE_USER / ROLE_ADMIN
※ROLE_ADMIN>ROLE_USER>ROLE_ANONYMOUS 순으로 구성
ROLE_USER_A와 ROLE_USER_B는 권한계층 대상에서 제외 함
//역할 DB 정보( ROLE 코드 / ROLE 패턴 / 역할유형 / 역할설명)
1. web-000001 / \A/login/.*\.do.*\Z / url / 로그인 허용을 위한 롤
2. web-000002 / \A.*\.do.*\Z / url / 모든자원에 대한 롤
3. web-000003 / \A/_mng_/usr/reg/.*\.do.*\Z / 사용자등록관리 자원에 대한 롤
//권한역할관계 DB 정보( 권한코드 / ROLE 코드 )
1. ROLE_ANONYMOUS / web-000001 //익명사용자에게 로그인 권한부여
2. ROLE_ADMIN / web-000002 //관리자에게 모든자원 접근권한 부여
설정한 권한관련 DB정보는 위와 같습니다.
계층구조로 잘 동작합니다.
다만 문제는 여기서 발생 합니다.
권한계층 대상에서 제외한 ROLE_USER_A 또는 ROLE_USER_B 에 "web-000003" ROLE을 부여할 경우
해당 ROLE을 부여받은 권한그룹 외 Access Denied가 발생합니다.
모든자원 접근권한을 부여한 ROLE_ADMIN도 마찬가지 Access Denied가 발생하게 됩니다.
앞선 답변 내용을 제가 제대로 이해 못한 것인지 모르겠으나
위와 같은 이슈가 발생하여 계층형이 아닌 단독으로 동작하지 않습니다.
앞선 답변내용 중
"결론부터 말씀드리면
권한이 계층구조가 아니어도 적용이 가능합니다.
계층구조 인경우 다음 빈설정파일에서
sqlHierarchicalRoles 속성에 쿼리가 정의되어 있습니다.
/src/main/resources/egovframework/spring/com/context-security.xml
여기에 ROLE_*로 되어 있는 권한그룹의 계층을 정의할수 있는데
필수는 아닙니다."
를 참고하여 context-security.xml의 sqlHierarchicalRoles 속성 제거 및
해당 속성의 내용을 지워보았으나 서버 기동 시 컴파일 오류가 발생합니다
A
안녕하세요.
표준프레임워크센터 입니다.
문의내용)
권한계층 대상에서 제외한 ROLE_USER_A 또는 ROLE_USER_B 에 "web-000003" ROLE을 부여할 경우
해당 ROLE을 부여받은 권한그룹 외 Access Denied가 발생합니다.
모든자원 접근권한을 부여한 ROLE_ADMIN도 마찬가지 Access Denied가 발생하게 됩니다.
답변)
위 내용으로 볼때
ROLE_USER_A 또는 ROLE_USER_B는 "권한계층 DB 정보"없는듯 합니다.
이경우 상속받는 내용이 없기때문에 지정한 ROLE이외에는
모두 Access Denied가 발생하는게 맞습니다.
권한이 계층구조가 아니어도 적용이 가능합니다.
이 말씀의 정확한 의미는 테스트 결과와 같습니다.
즉,
계층구조로 설정하지 않아도 동작하지만
이경우는 해당 권한그룹에 지정한 규칙만으로 동작합니다.
감사합니다.
표준프레임워크센터 입니다.
문의내용)
권한계층 대상에서 제외한 ROLE_USER_A 또는 ROLE_USER_B 에 "web-000003" ROLE을 부여할 경우
해당 ROLE을 부여받은 권한그룹 외 Access Denied가 발생합니다.
모든자원 접근권한을 부여한 ROLE_ADMIN도 마찬가지 Access Denied가 발생하게 됩니다.
답변)
위 내용으로 볼때
ROLE_USER_A 또는 ROLE_USER_B는 "권한계층 DB 정보"없는듯 합니다.
이경우 상속받는 내용이 없기때문에 지정한 ROLE이외에는
모두 Access Denied가 발생하는게 맞습니다.
권한이 계층구조가 아니어도 적용이 가능합니다.
이 말씀의 정확한 의미는 테스트 결과와 같습니다.
즉,
계층구조로 설정하지 않아도 동작하지만
이경우는 해당 권한그룹에 지정한 규칙만으로 동작합니다.
감사합니다.