권한처리쪽 치명적인 에러가있어 문의드립니다
- 작성자 :
- 백*환
- 작성일 :
- 2012-12-06 13:41:51
- 조회수 :
- 1,273
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
권한처리에서 동일 리소스에 대해 여러권한에 등록되어있을경우,치명적인 로직 에러가 있어 문의드립니다.
초기 서버 구동시 리소스별 접근 권한을 계산하는 로직을 보면, 필요한 권한리소스 맵을 ROLE_SORT에 의해서 정렬한뒤 차례로 맵핑합니다.
이때 동일한 리소스에 여러권한이 맵핑되는 상황에서는 해당권한이 반드시 연속으로 조회가 되어야 합니다. 그렇지않으면 이전에 조회된 권한을 무시하고 나중에 조회된 권한만 설정됩니다.
egovframework.com.sec.security.securedobject.impl.SecuredObjectDAO.getRolesAndResources(String) 메소드 내부에 주석으로도 다음과같이 명시가 되어있습니다.
// 이미 requestMap 에 해당 Resource 에 대한 Role 이
// 하나 이상 맵핑되어 있었던 경우, sort_order 는
// resource(Resource) 에 대해 매겨지므로 같은
// Resource 에 대한 Role 맵핑은 연속으로 조회됨.
// 해당 맵핑 Role List (SecurityConfig) 의 데이터를
// 재활용하여 새롭게 데이터 구축
그런데 실제로 쿼리가 실행될때 ROLE_SORT에의해 정렬은 되지만 같은 Resource에대한 Role 맵핑은 연속적으로 조회되지 않습니다.
따라서 반드시 Role 맵핑정보를 조회하는 default 쿼리의 ORDER BY 구문에 두번째 정렬 인자로 ROLE_PTTRN을 주어야 정상 동작합니다. 확인 부탁드립니다.
초기 서버 구동시 리소스별 접근 권한을 계산하는 로직을 보면, 필요한 권한리소스 맵을 ROLE_SORT에 의해서 정렬한뒤 차례로 맵핑합니다.
이때 동일한 리소스에 여러권한이 맵핑되는 상황에서는 해당권한이 반드시 연속으로 조회가 되어야 합니다. 그렇지않으면 이전에 조회된 권한을 무시하고 나중에 조회된 권한만 설정됩니다.
egovframework.com.sec.security.securedobject.impl.SecuredObjectDAO.getRolesAndResources(String) 메소드 내부에 주석으로도 다음과같이 명시가 되어있습니다.
// 이미 requestMap 에 해당 Resource 에 대한 Role 이
// 하나 이상 맵핑되어 있었던 경우, sort_order 는
// resource(Resource) 에 대해 매겨지므로 같은
// Resource 에 대한 Role 맵핑은 연속으로 조회됨.
// 해당 맵핑 Role List (SecurityConfig) 의 데이터를
// 재활용하여 새롭게 데이터 구축
그런데 실제로 쿼리가 실행될때 ROLE_SORT에의해 정렬은 되지만 같은 Resource에대한 Role 맵핑은 연속적으로 조회되지 않습니다.
따라서 반드시 Role 맵핑정보를 조회하는 default 쿼리의 ORDER BY 구문에 두번째 정렬 인자로 ROLE_PTTRN을 주어야 정상 동작합니다. 확인 부탁드립니다.
A
안녕하세요. 백동환님
관련부분 확인 후 조치하도록 하겠습니다.
고맙습니다.
관련부분 확인 후 조치하도록 하겠습니다.
고맙습니다.