권한관리 관련
- 작성자 :
- 이*용
- 작성일 :
- 2020-04-09 16:56:46
- 조회수 :
- 2,344
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
권한관리에서 아래와 같이 추가 하였습니다.
1) 계층 구조 추가
INSERT INTO COMTNAUTHORINFO VALUES ('ROLE_ADMIN_TEST','관리자 테스트', '' , SYSDATE);
INSERT INTO COMTNAUTHORINFO VALUES ('ROLE_USER_TEST','일반인 테스트', '' , SYSDATE);
2) 생성된 권한에 메뉴생성관리 추가
INSERT INTO COMTNROLES_HIERARCHY VALUES ('ROLE_ADMIN','ROLE_ADMIN_TEST'); -- ROLE_ADMIN 관리자권한
INSERT INTO COMTNROLES_HIERARCHY VALUES ('ROLE_USER','ROLE_USER_TEST'); -- ROLE_USER 일반인권한
ROLE_ADMIN_TEST와 ROLE_USER_TEST가 추가된 상황에서 에러가 나기 시작 합니다.
'ROLE_ADMIN'만 추가시에는 에러가 안나는데. 'ROLE_USER'추가가 되면 에러가 납니다.
'ROLE_USER'은 추가가 되면 안되는 건가요?
로그인 및 로그 아웃시
=> error message : org.springframework.security.access.AccessDeniedException: Access is deniedAccount
아래 URL을 각각 찾아 봤지만 질문내용에대한 답변을 확인 하지 못했습니다.
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v3.8:sec:%EA%B6%8C%ED%95%9C%EA%B4%80%EB%A6%AC
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v3.8:sec:%EA%B6%8C%ED%95%9C%EA%B4%80%EB%A6%AC_%EA%B8%B0%EB%8A%A5
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v3.8:sec:%EA%B6%8C%ED%95%9C%EB%B3%84_%EB%A1%A4%EA%B4%80%EB%A6%AC
1. 권한 추가 하는 방법이 잘못 된건가요?
2. 권한 추가 후 WAS를 재기동 해야 하나요?
신규권한 생성 관련하여 절차및 사용방법에 대해 명확한 답변 요청 드립니다.
1) 계층 구조 추가
INSERT INTO COMTNAUTHORINFO VALUES ('ROLE_ADMIN_TEST','관리자 테스트', '' , SYSDATE);
INSERT INTO COMTNAUTHORINFO VALUES ('ROLE_USER_TEST','일반인 테스트', '' , SYSDATE);
2) 생성된 권한에 메뉴생성관리 추가
INSERT INTO COMTNROLES_HIERARCHY VALUES ('ROLE_ADMIN','ROLE_ADMIN_TEST'); -- ROLE_ADMIN 관리자권한
INSERT INTO COMTNROLES_HIERARCHY VALUES ('ROLE_USER','ROLE_USER_TEST'); -- ROLE_USER 일반인권한
ROLE_ADMIN_TEST와 ROLE_USER_TEST가 추가된 상황에서 에러가 나기 시작 합니다.
'ROLE_ADMIN'만 추가시에는 에러가 안나는데. 'ROLE_USER'추가가 되면 에러가 납니다.
'ROLE_USER'은 추가가 되면 안되는 건가요?
로그인 및 로그 아웃시
=> error message : org.springframework.security.access.AccessDeniedException: Access is deniedAccount
아래 URL을 각각 찾아 봤지만 질문내용에대한 답변을 확인 하지 못했습니다.
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v3.8:sec:%EA%B6%8C%ED%95%9C%EA%B4%80%EB%A6%AC
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v3.8:sec:%EA%B6%8C%ED%95%9C%EA%B4%80%EB%A6%AC_%EA%B8%B0%EB%8A%A5
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v3.8:sec:%EA%B6%8C%ED%95%9C%EB%B3%84_%EB%A1%A4%EA%B4%80%EB%A6%AC
1. 권한 추가 하는 방법이 잘못 된건가요?
2. 권한 추가 후 WAS를 재기동 해야 하나요?
신규권한 생성 관련하여 절차및 사용방법에 대해 명확한 답변 요청 드립니다.
A
안녕하세요.
표준프레임워크센터 입니다.
공통컴포넌트를 사용하고 계신다면
다음 설정파일에서 Globals.Auth = security로 설정하셔야 합니다.
src/main/resources/egovframework/egovProps/globals.properties
세큐리티 모드에서만 스프링시큐리티 및 표준프레임워크 시큐리티 간소화 서비스가 동작하게 됩니다.
다음으로
ROLE_ADMIN등의 권한그룹은
COMTNROLES_HIERARCHY에 필수적으로 등록하실 필요는 없습니다.
공통컴포넌트를 구동하신후
"60. 권한관리"메뉴에서 등록하시고
"70. 권한그룹관리"에서 관리자/일반 사용자 등으로 설정해주셔야 합니다.
최종적으로
"90. 롤관리" 해당 권한그룹에 롤을 추가해 주셔야 합니다.
<추가답변입니다.>
1.
질문과 같은 방식으로 테스트를 진행했습니다.
그 과정은 아래와 같습니다.
(* 표준프레임워크 버전은 3.8이고, 기본으로 제공되는 테이블명으로 말씀드립니다.)
1) comtnauthorinfo 권한 관리 테이블에 권한 등록(질문에 적어주신대로 진행)
2) comtnroles_hierarchy 테이블에 역할 계층 등록(질문에 적어주신대로 진행)
3) comtnroleinfo 테이블에 테스트 Role 등록
4) comtnauthorrolerelate 테이블에 권한(comtnauthorinfo) 과 Role(comtnroleinfo) 매핑
5) comtnemplyrscrtyestbs 테이블에 사용자 아이디와 권한 매핑
6) 사용자 아이디로 권한 적용여부 확인(테스트 결과 정상적으로 동작하였습니다.)
테스트 결과를 참고하셔서 설정 등을 확인하여 보시기 바랍니다.
2.
롤 권한에 대한 변경은 서버를 재기동하지 않으면 적용이 되지 않고
권한이 변경되는 시점에 표준프레임워크에서 제공하는 아래 클래스의 메소드를 호출하여 리로드 시켜주시면 됩니다.
egovframework.rte.fdl.security.intercept.EgovReloadableFilterInvocationSecurityMetadataSource
databaseSecurityMetadataSource.reload();
"databaseSecurityMetadataSource" id 로 egovframework.rte.fdl.security.intercept.EgovReloadableFilterInvocationSecurityMetadataSource
클래스가 생성이되기 때문에 databaseSecurityMetadataSource를 injection 방식으로 호출하시면 됩니다.
(@Resource 또는 @Autowired)
감사합니다.
표준프레임워크센터 입니다.
공통컴포넌트를 사용하고 계신다면
다음 설정파일에서 Globals.Auth = security로 설정하셔야 합니다.
src/main/resources/egovframework/egovProps/globals.properties
세큐리티 모드에서만 스프링시큐리티 및 표준프레임워크 시큐리티 간소화 서비스가 동작하게 됩니다.
다음으로
ROLE_ADMIN등의 권한그룹은
COMTNROLES_HIERARCHY에 필수적으로 등록하실 필요는 없습니다.
공통컴포넌트를 구동하신후
"60. 권한관리"메뉴에서 등록하시고
"70. 권한그룹관리"에서 관리자/일반 사용자 등으로 설정해주셔야 합니다.
최종적으로
"90. 롤관리" 해당 권한그룹에 롤을 추가해 주셔야 합니다.
<추가답변입니다.>
1.
질문과 같은 방식으로 테스트를 진행했습니다.
그 과정은 아래와 같습니다.
(* 표준프레임워크 버전은 3.8이고, 기본으로 제공되는 테이블명으로 말씀드립니다.)
1) comtnauthorinfo 권한 관리 테이블에 권한 등록(질문에 적어주신대로 진행)
2) comtnroles_hierarchy 테이블에 역할 계층 등록(질문에 적어주신대로 진행)
3) comtnroleinfo 테이블에 테스트 Role 등록
4) comtnauthorrolerelate 테이블에 권한(comtnauthorinfo) 과 Role(comtnroleinfo) 매핑
5) comtnemplyrscrtyestbs 테이블에 사용자 아이디와 권한 매핑
6) 사용자 아이디로 권한 적용여부 확인(테스트 결과 정상적으로 동작하였습니다.)
테스트 결과를 참고하셔서 설정 등을 확인하여 보시기 바랍니다.
2.
롤 권한에 대한 변경은 서버를 재기동하지 않으면 적용이 되지 않고
권한이 변경되는 시점에 표준프레임워크에서 제공하는 아래 클래스의 메소드를 호출하여 리로드 시켜주시면 됩니다.
egovframework.rte.fdl.security.intercept.EgovReloadableFilterInvocationSecurityMetadataSource
databaseSecurityMetadataSource.reload();
"databaseSecurityMetadataSource" id 로 egovframework.rte.fdl.security.intercept.EgovReloadableFilterInvocationSecurityMetadataSource
클래스가 생성이되기 때문에 databaseSecurityMetadataSource를 injection 방식으로 호출하시면 됩니다.
(@Resource 또는 @Autowired)
감사합니다.