전자정부표준프레임워크기반 스프링 시큐리티 간소화 작업을 처리 했습니다. 다양한 처리 방식으로 헷갈렸으나, 오늘 테스트 작업을 무난히 처리했습니다.
단, 관리자 UI에서 적용 후 톰캣을 재 시작 해야 하는 번거로움이 있습니다. 실시간 처리하는 방법도 있으나, 상황이 여러가지(전자정부버전과 설정등등)가 존재 하기 때문에 톰캣 재 시작으로 권한이 적용되게 놓아 둡니다.
(추가정보: 현재는 hsql메모리 DB이기 때문에, mysql에서 확인 됩니다. hsql메모리DB에서는 더미데이터로 정상작동 확인 되었습니다.)
주). 기존에 사용하던 일반세션로그인 부분(아래)는 주석처리 합니다. 왜냐하면, 전자정부 스프링 시큐리티가 아래 설정보다 먼저 실행되지만, 아래 인터셉터도 적용되기 때문에...(아래 egov-com-servlet.xml 내용 주석처리 )
```xml
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/cop/com/*.do"/>
<mvc:mapping path="/cop/bbs/*Master*.do"/>
<mvc:mapping path="/uat/uia/*.do"/>
<mvc:mapping path="/uss/umt/mber/*.do"/>
<mvc:exclude-mapping path="/uat/uia/actionLogin.do"/>
<mvc:exclude-mapping path="/uat/uia/egovLoginUsr.do"/>
<bean class="egovframework.com.cmm.interceptor.AuthenticInterceptor" />
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/admin/**"/>
<mvc:exclude-mapping path="/admin/actionLogin.do"/>
<mvc:exclude-mapping path="/admin/adminLoginUsr.do"/>
<bean class="timespace.miniplugin.com.AuthenticInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
```
- (주.관리자단 로그인만 스프링시큐리티 적용되었음.) AdminLoginController.java 클래스 수정.
- 작업핵심: context-security.xml파일에서 url패턴과 권한 쿼리 순서가 ASC에서 DESC로 변경(아래).
```xml
<egov-security:secured-object-config id="securedObjectConfig"
roleHierarchyString="
ROLE_ADMIN > ROLE_USER
ROLE_USER > ROLE_ANONYMOUS"
sqlRolesAndUrl="
SELECT ROLE_PTTRN url, AUTHOR_CODE authority
FROM AUTHORROLE
WHERE USE_AT='Y' ORDER BY SORT_ORDR DESC"
/>
```
- 특이사항: 전자정부기반 스프링 스큐리티로 적용한 이후 입력창에서 에러 발생 처리OK-아래 보안해제 코드 추가.
```xml
sniff="false"
xframeOptions="SAMEORIGIN"
xssProtection="false"
csrf="false"
```
- 로그아웃 세션 처리 추가 코드(아래)
```java
/*
RequestContextHolder.getRequestAttributes().removeAttribute("LoginVO", RequestAttributes.SCOPE_SESSION);
SecurityContextHolder.clearContext();//스프링 시큐리티 로그아웃 처리 추가
*/
HttpSession session = request.getSession(false);
if (session != null) {
session.invalidate();
}
```
Ps. 실시간 권한 적용 관련 정보:
1). https://open.egovframe.org/cop/bbs/selectBoardArticle.do?bbsId=BBSMSTR_000000000013&nttId=14265
설정간소화가 포함되어 있는 표준프레임워크 3.X에서는 EgovReloadableDefaultFilterInvocationDefinitionSource 가 아닌 EgovReloadableFilterInvocationSecurityMetadataSource 클래스로 변경되었습니다. (패키지도 egovframework.rte.fdl.security.intercept로 변경)
2). EgovReloadableFilterInvocationSecurityMetadataSource.java 클래스 내용(아래)
https://github.com/eGovFrame/egovframe.rte.3.5/blob/master/runtime-environment/Foundation/egovframework.rte.fdl.security/src/main/java/egovframework/rte/fdl/security/intercept/EgovReloadableFilterInvocationSecurityMetadataSource.java
기존 스프링 웹프로젝트 오라클용으로_2 (0) | 2020.05.23 |
---|---|
기존 스프링 웹프로젝트 오라클용으로_1 (0) | 2020.04.30 |
스프링 시큐리티로 인증과 권한 테스트 작업 (0) | 2020.03.10 |
스프링 시큐리티로 인증과 권한을 관리자에서 지정할 수 있게 추가 (0) | 2020.03.08 |
기존 cms프로젝트(ibatis용)에서 배너관리기능(mybatis용) 사용자단 추가OK (0) | 2020.03.04 |
댓글 영역