설정간소화 질문드립니다.
- 작성자 :
- 조*준
- 작성일 :
- 2016-01-06 11:51:46
- 조회수 :
- 1,007
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
<egov-security:config id="securityConfig"
loginUrl="/uat/uia/egovLoginUsr.do"
logoutSuccessUrl="/EgovContent.do"
loginFailureUrl="/uat/uia/egovLoginUsr.do?login_error=1"
accessDeniedUrl="/sec/ram/accessDenied.do"
dataSource="egov.dataSource"
jdbcUsersByUsernameQuery="SELECT USER_ID, ESNTL_ID AS PASSWORD, 1 ENABLED, USER_NM, USER_ZIP,
USER_ADRES, USER_EMAIL, USER_SE, ORGNZT_ID, ESNTL_ID,
(select a.ORGNZT_NM from COMTNORGNZTINFO a where a.ORGNZT_ID = m.ORGNZT_ID) ORGNZT_NM
FROM COMVNUSERMASTER m WHERE CONCAT(USER_SE, USER_ID) = ?"
jdbcAuthoritiesByUsernameQuery="SELECT A.SCRTY_DTRMN_TRGET_ID USER_ID, A.AUTHOR_CODE AUTHORITY
FROM COMTNEMPLYRSCRTYESTBS A, COMVNUSERMASTER B
WHERE A.SCRTY_DTRMN_TRGET_ID = B.ESNTL_ID AND B.USER_ID = ?"
jdbcMapClass="egovframework.com.sec.security.common.EgovSessionMapping"
requestMatcherType="regex"
hash="plaintext"
hashBase64="false"
concurrentMaxSessons="1"
concurrentExpiredUrl="/EgovContent.do"
defaultTargetUrl="/EgovContent.do"
/>
에서 jdbcMapClass 을 변경해서 사용하려고 합니다.
서버 구동시 제가 만든 CustomSessionMapping클래스(EgovUsersByUsernameMapping을 상속)의 생성자가 동작은 합니다.
그런데 로그인시 mapRow메서드가 실행되지 않는데 이유를 알고 싶습니다.
그리고 하나만 더 여쭤보고 싶은것이
<egov-security:secured-object-config id="securedObjectConfig"
.....
sqlRolesAndUrl="
SELECT a.ROLE_PTTRN url, b.AUTHOR_CODE authority
FROM TB_COMINROLEINFO a, TB_COMTNAUTHORROLERELATE b
WHERE a.ROLE_CODE = b.ROLE_CODE
ORDER BY a.ROLE_SORT"
......
>
에서 사용자가 로그인할때마다 sqlRolesAndUrl로 얻은 url별 권한목록을 가지고 임의의 url에 접근할때 접근권한여부를 판단하는 소스가
어디있는지도 알고싶습니다.
읽어주셔서 감사합니다.
loginUrl="/uat/uia/egovLoginUsr.do"
logoutSuccessUrl="/EgovContent.do"
loginFailureUrl="/uat/uia/egovLoginUsr.do?login_error=1"
accessDeniedUrl="/sec/ram/accessDenied.do"
dataSource="egov.dataSource"
jdbcUsersByUsernameQuery="SELECT USER_ID, ESNTL_ID AS PASSWORD, 1 ENABLED, USER_NM, USER_ZIP,
USER_ADRES, USER_EMAIL, USER_SE, ORGNZT_ID, ESNTL_ID,
(select a.ORGNZT_NM from COMTNORGNZTINFO a where a.ORGNZT_ID = m.ORGNZT_ID) ORGNZT_NM
FROM COMVNUSERMASTER m WHERE CONCAT(USER_SE, USER_ID) = ?"
jdbcAuthoritiesByUsernameQuery="SELECT A.SCRTY_DTRMN_TRGET_ID USER_ID, A.AUTHOR_CODE AUTHORITY
FROM COMTNEMPLYRSCRTYESTBS A, COMVNUSERMASTER B
WHERE A.SCRTY_DTRMN_TRGET_ID = B.ESNTL_ID AND B.USER_ID = ?"
jdbcMapClass="egovframework.com.sec.security.common.EgovSessionMapping"
requestMatcherType="regex"
hash="plaintext"
hashBase64="false"
concurrentMaxSessons="1"
concurrentExpiredUrl="/EgovContent.do"
defaultTargetUrl="/EgovContent.do"
/>
에서 jdbcMapClass 을 변경해서 사용하려고 합니다.
서버 구동시 제가 만든 CustomSessionMapping클래스(EgovUsersByUsernameMapping을 상속)의 생성자가 동작은 합니다.
그런데 로그인시 mapRow메서드가 실행되지 않는데 이유를 알고 싶습니다.
그리고 하나만 더 여쭤보고 싶은것이
<egov-security:secured-object-config id="securedObjectConfig"
.....
sqlRolesAndUrl="
SELECT a.ROLE_PTTRN url, b.AUTHOR_CODE authority
FROM TB_COMINROLEINFO a, TB_COMTNAUTHORROLERELATE b
WHERE a.ROLE_CODE = b.ROLE_CODE
ORDER BY a.ROLE_SORT"
......
>
에서 사용자가 로그인할때마다 sqlRolesAndUrl로 얻은 url별 권한목록을 가지고 임의의 url에 접근할때 접근권한여부를 판단하는 소스가
어디있는지도 알고싶습니다.
읽어주셔서 감사합니다.
A
조호준님, 안녕하세요.
표준프레임워크에서 지원하는 템플릿 프로젝트에 설정간소화가 설정되어 있으며, jdbcMapClass 역시 별도로 egovframework.com.sec.security.common.EgovSessionMapping 클래스가 생성되어 있습니다.
템플릿 프로젝트를 구동시에는 정상적으로 동작하는 소스이므로, 커스터마이징 하신 내역과 비교해 보시면 mapRow()가 동작하지 않는 부분에 대해 어느정도 디버깅이 가능하리라 생각됩니다. 센터에서는 커스터마이징 내역을 알 수 없기 때문에 가이드 드리지 못합니다.
sqlRolesAndUrl로 얻은 권한 목록은 SecuredObjectDAO 클래스를 통해 권한목록을 가져오게 됩니다. 권한목록을 가져온 후 권한여부를 판단하는 소스는 스프링 시큐리티 코어의 RoleVoter 클래스를 사용하게 됩니다. RoleVoter 클래스의 경우 표준프레임워크에서 별도 커스터마이징한 부분이 아니므로, 스프링 시큐리티 레퍼런스 등을 참고하시면 될 것 같습니다.
관련 위키 및 외부링크를 걸어드리니, 참고하시기 바랍니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte3:fdl:server_security:authorization
http://zgundam.tistory.com/57
감사합니다.
표준프레임워크에서 지원하는 템플릿 프로젝트에 설정간소화가 설정되어 있으며, jdbcMapClass 역시 별도로 egovframework.com.sec.security.common.EgovSessionMapping 클래스가 생성되어 있습니다.
템플릿 프로젝트를 구동시에는 정상적으로 동작하는 소스이므로, 커스터마이징 하신 내역과 비교해 보시면 mapRow()가 동작하지 않는 부분에 대해 어느정도 디버깅이 가능하리라 생각됩니다. 센터에서는 커스터마이징 내역을 알 수 없기 때문에 가이드 드리지 못합니다.
sqlRolesAndUrl로 얻은 권한 목록은 SecuredObjectDAO 클래스를 통해 권한목록을 가져오게 됩니다. 권한목록을 가져온 후 권한여부를 판단하는 소스는 스프링 시큐리티 코어의 RoleVoter 클래스를 사용하게 됩니다. RoleVoter 클래스의 경우 표준프레임워크에서 별도 커스터마이징한 부분이 아니므로, 스프링 시큐리티 레퍼런스 등을 참고하시면 될 것 같습니다.
관련 위키 및 외부링크를 걸어드리니, 참고하시기 바랍니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte3:fdl:server_security:authorization
http://zgundam.tistory.com/57
감사합니다.