JAVA

[2023] Spring Security의 context-security.xml 설정 분석하기

wooyit 2023. 8. 8. 06:05

 

안녕하세요. 오늘은 Spring Security의 context-security.xml 설정에 대해 자세히 살펴보려 합니다. 각 섹션별로 구성을 나눠서 어떤 개념과 역할이 포함되어 있는지 알아보겠습니다.

context-security.xml 설정

1. 인증 설정:

loginUrl="/cmns/login/loginUser.do"
logoutSuccessUrl="/EgovContent.do"
loginFailureUrl="/cmns/login/loginUser.do?login_error=1"
accessDeniedUrl="/sec/ram/accessDenied.do"
  • loginUrl: 사용자가 인증을 위해 자신의 자격 증명을 POST할 예상되는 엔드포인트입니다.
  • logoutSuccessUrl: 사용자가 성공적으로 로그아웃하면 이 URL로 리다이렉트됩니다.
  • loginFailureUrl: 인증이 실패하면(예: 잘못된 자격 증명) 사용자는 이 URL로 리다이렉트됩니다.
  • accessDeniedUrl: 사용자가 접근 권한이 없는 리소스에 접근하려고 할 때 리다이렉트될 엔드포인트입니다.

2. 사용자 세부 정보 설정:

데이터베이스에서 사용자 세부 정보와 해당 권한을 가져오는 것과 관련이 있습니다.

dataSource="dataSource"
jdbcUsersByUsernameQuery="SELECT ... FROM TB_USER_INFO WHERE USER_NTE_ID = ?"
jdbcAuthoritiesByUsernameQuery="SELECT ... FROM TB_USER_AUTHRT_MPP A, TB_USER_INFO B WHERE A.USER_NTE_ID = B.USER_NTE_ID AND B.USER_NTE_ID = ?"
  • dataSource: 데이터베이스 소스 빈을 참조합니다.
  • jdbcUsersByUsernameQuery: 제공된 사용자 이름을 기반으로 사용자 세부 정보를 가져오기 위한 SQL 쿼리입니다.
  • jdbcAuthoritiesByUsernameQuery: 특정 사용자에 할당된 역할 또는 권한을 가져오기 위한 SQL 쿼리입니다.

3. 세션 관리:

concurrentMaxSessons="1"
concurrentExpiredUrl="/EgovContent.do"
  • concurrentMaxSessons: 사용자가 가질 수 있는 동시 세션의 최대 수를 지정합니다. 여기서는 사용자당 하나의 세션만 허용됩니다.
  • concurrentExpiredUrl: 새 세션을 생성하고 최대 수를 초과하면 이전 세션은 만료되고 사용자는 이 URL로 리다이렉트됩니다.

4. 보안 헤더:

sniff="true"
xframeOptions="SAMEORIGIN"
xssProtection="true"
csrf="false"
  • sniff: MIME 타입 감지 보호를 활성화 또는 비활성화합니다.
  • xframeOptions: 콘텐츠를 iframe에 어떻게 포함시킬 수 있는지 결정합니다.
  • xssProtection: XSS (Cross-Site Scripting) 보호를 활성화 또는 비활성화합니다.
  • csrf: CSRF (Cross-Site Request Forgery) 보호를 활성화 또는 비활성화합니다.

5. 역할 계층 구조 및 접근 제어:

이 섹션에서는 URL 패턴, 메서드 등에 따라 계층적 역할 및 해당 접근 제어를 정의합니다.

  • sqlHierarchicalRoles: 데이터베이스에서 역할 계층 구조를 가져옵니다.
  • sqlRolesAndUrl: 특정 URL 패턴에 역할을 매핑합니다.
  • sqlRolesAndMethod: 특정 HTTP 메서드에 역할을 매핑합니다.
  • sqlRolesAndPointcut: 특정 포인트컷에 역할을 매핑합니다.
  • sqlRegexMatchedRequestMapping: 특정 정규 표현식 기반 URL 패턴에 역할을 매핑합니다.

6. 추가 초기화:

<egov-security:initializer id="initializer" supportMethod="true" supportPointcut="false" />

이 초기화는 추가 구성 옵션을 설정합니다. supportMethod 속성이 true로 설정된 경우 메서드 수준 보안이 활성화됩니다.

 

이 분석을 통해 context-security.xml의 Spring Security 설정의 다양한 구성 요소와 역할에 대한 명확한 이해를 얻으셨기를 바랍니다. 즐거운 코딩되세요~! 🚀

 

[끄적끄적]

 

끄적끄적

 

lyong88.tistory.com

[wooyung's IT 블로그]

 

Home

wooyung's IT 블로그 WooyIT

www.wooyit.com