security 해결이 안되서 다시 질문 드립니다.
- 작성자 :
- 유*길
- 작성일 :
- 2018-01-18 15:42:17
- 조회수 :
- 1,480
- 구분 :
- 기타
- 진행상태 :
- 완료
Q
우선 아래에 했던 질문글과 받았던 답글 입니다
============= 질문글 =========================
안녕하세요.
시큐리티 설정 중 sqlHierarchicalRoles, sqlRolesAndUrl 를 사용해서
URL을 DB에 저장해서 관리하고 있는데요.
예를 들어 Controller 에 localhost:8080/test/notice.do
notice.do 라는 API 를 호출 시 sqlRolesAndUrl 에 지정 되어 있는 DB에 `notice.do` 가 등록되어 있어서
로그인 없이는 접근이 불가능한 상태 입니다.
그런데 localhost:8080/test/notice.do?
이처럼 뒤에 ? 를 붙이면 로그인 없이도 해당 URL에 접근이 가능해지는데 관련해서 어디를 보면 되는것인지 알고 싶습니다.
설정내용 첨부합니다.
<egov-security:secured-object-config id="securedObjectConfig"
sqlHierarchicalRoles="SELECT CHLDRN_ROLE child, PARNTS_ROLE parent FROM LETTNROLES_HIERARCHY"
sqlRolesAndUrl="
SELECT CONCAT('/', links ) url, 'ROLE_USER_MEMBER' authority
FROM TB_MENU"
/>
정리하면 설정 된 DB에 `notice.do` 라는 URL 이 들어가있고 로그인 없이 접근하려고 하면 접근불가능.
그러나 notice.do? 로 물음표를 붙인 후 접근하면 로그인 없이도 접근 가능 상태 입니다.
========================================================================
================== 답글 =====================
안녕하세요 유남길님
표준프레임워크센터입니다.
sqlRolesAndUrl을 사용하시는경우
패턴이 중복되지 않는지 여부를 확인해 보셔야 할듯 합니다.
ROLE_ANONYMOUS와 ROLE_*간에 포함관계형태로 중복이 걸리는경우
말씀하신 문제가 발생할수 있을것입니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:fdl:server_security:architecture
위키 내용의 RESOURCE_PATTERN 지정 양식을 보시고 중복여부를 확인해 보시기 바랍니다.
감사합니다.
========================================================================
해당 답변을 보고 살펴보았는데요.
저는 SELECT CHLDRN_ROLE child, PARNTS_ROLE parent FROM LETTNROLES_HIERARCHY 쿼리를 조회 시 아래와 같은 결과값을 얻습니다.
child parent
ROLE_USER_MEMBER ROLE_ANONYMOUS
ROLE_ADMIN ROLE_USER_MEMBER
딱 해당값만 존재하고 딱히 ROLE 이 중복되거나 할건 없습니다.
그리고 sqlRolesAndUrl 에 걸려있는 쿼리 실행 시 아래와 같은 결과값을 얻습니다.
SELECT CONCAT('/', links ) url, 'ROLE_USER_MEMBER' authority FROM TB_MENU
url authority
/notice.do ROLE_USER_MEMBER
/userInfo.do ROLE_USER_MEMBER
. .
. .
이런식으로 각 API 들이 저장되어 있고 접근권한으로 'ROLE_USER_MEMBER'가 표출됩니다.
지금 상황에선 제가 아는한도내에선 더이상 볼 수 있는게 없는거 같은데 관련하여 어떤식으로 확인하고 처리하면 좋을지 질문 드립니다.
============= 질문글 =========================
안녕하세요.
시큐리티 설정 중 sqlHierarchicalRoles, sqlRolesAndUrl 를 사용해서
URL을 DB에 저장해서 관리하고 있는데요.
예를 들어 Controller 에 localhost:8080/test/notice.do
notice.do 라는 API 를 호출 시 sqlRolesAndUrl 에 지정 되어 있는 DB에 `notice.do` 가 등록되어 있어서
로그인 없이는 접근이 불가능한 상태 입니다.
그런데 localhost:8080/test/notice.do?
이처럼 뒤에 ? 를 붙이면 로그인 없이도 해당 URL에 접근이 가능해지는데 관련해서 어디를 보면 되는것인지 알고 싶습니다.
설정내용 첨부합니다.
<egov-security:secured-object-config id="securedObjectConfig"
sqlHierarchicalRoles="SELECT CHLDRN_ROLE child, PARNTS_ROLE parent FROM LETTNROLES_HIERARCHY"
sqlRolesAndUrl="
SELECT CONCAT('/', links ) url, 'ROLE_USER_MEMBER' authority
FROM TB_MENU"
/>
정리하면 설정 된 DB에 `notice.do` 라는 URL 이 들어가있고 로그인 없이 접근하려고 하면 접근불가능.
그러나 notice.do? 로 물음표를 붙인 후 접근하면 로그인 없이도 접근 가능 상태 입니다.
========================================================================
================== 답글 =====================
안녕하세요 유남길님
표준프레임워크센터입니다.
sqlRolesAndUrl을 사용하시는경우
패턴이 중복되지 않는지 여부를 확인해 보셔야 할듯 합니다.
ROLE_ANONYMOUS와 ROLE_*간에 포함관계형태로 중복이 걸리는경우
말씀하신 문제가 발생할수 있을것입니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:fdl:server_security:architecture
위키 내용의 RESOURCE_PATTERN 지정 양식을 보시고 중복여부를 확인해 보시기 바랍니다.
감사합니다.
========================================================================
해당 답변을 보고 살펴보았는데요.
저는 SELECT CHLDRN_ROLE child, PARNTS_ROLE parent FROM LETTNROLES_HIERARCHY 쿼리를 조회 시 아래와 같은 결과값을 얻습니다.
child parent
ROLE_USER_MEMBER ROLE_ANONYMOUS
ROLE_ADMIN ROLE_USER_MEMBER
딱 해당값만 존재하고 딱히 ROLE 이 중복되거나 할건 없습니다.
그리고 sqlRolesAndUrl 에 걸려있는 쿼리 실행 시 아래와 같은 결과값을 얻습니다.
SELECT CONCAT('/', links ) url, 'ROLE_USER_MEMBER' authority FROM TB_MENU
url authority
/notice.do ROLE_USER_MEMBER
/userInfo.do ROLE_USER_MEMBER
. .
. .
이런식으로 각 API 들이 저장되어 있고 접근권한으로 'ROLE_USER_MEMBER'가 표출됩니다.
지금 상황에선 제가 아는한도내에선 더이상 볼 수 있는게 없는거 같은데 관련하여 어떤식으로 확인하고 처리하면 좋을지 질문 드립니다.
A
안녕하세요.
표준프레임워크 센터 입니다.
해당 롤권한의 URL 패턴 설정의 문제로 보입니다.
URL 패턴의 기입 방식은 정규 표현식 (Regular Expression) 방식이며
해당 URL, 즉 /notice.do 관련 된 URL 접근 제어 하시려면 추가 문구가 필요합니다.
해당 URL 롤 관리에서 /notice.do를 \A/.notice.do.*\Z 로 변경하시기 바랍니다.
해당 문구는 접근하려는 URL에 notice.do가 포함되면 (앞뒤에 어떠한 문자가 있던지) 해당 패턴으로 인식하는 문구 입니다.
참고로 권한 설정이 수정 되시면 서버를 재기동 하셔야 합니다.
재기동 없이 설정 변경시 자동으로 권한을 반영하는 로직은 아래 링크를 참조하시면 되십니다.
https://open.egovframe.go.kr/cop/bbs/selectBoardArticle.do?bbsId=BBSMSTR_000000000013&nttId=17515
감사합니다.
표준프레임워크 센터 입니다.
해당 롤권한의 URL 패턴 설정의 문제로 보입니다.
URL 패턴의 기입 방식은 정규 표현식 (Regular Expression) 방식이며
해당 URL, 즉 /notice.do 관련 된 URL 접근 제어 하시려면 추가 문구가 필요합니다.
해당 URL 롤 관리에서 /notice.do를 \A/.notice.do.*\Z 로 변경하시기 바랍니다.
해당 문구는 접근하려는 URL에 notice.do가 포함되면 (앞뒤에 어떠한 문자가 있던지) 해당 패턴으로 인식하는 문구 입니다.
참고로 권한 설정이 수정 되시면 서버를 재기동 하셔야 합니다.
재기동 없이 설정 변경시 자동으로 권한을 반영하는 로직은 아래 링크를 참조하시면 되십니다.
https://open.egovframe.go.kr/cop/bbs/selectBoardArticle.do?bbsId=BBSMSTR_000000000013&nttId=17515
감사합니다.