[SPRING] 스프링 보안과 함께 여러 개의 보안 컨텍스트를 가질 수 있습니까?
SPRING스프링 보안과 함께 여러 개의 보안 컨텍스트를 가질 수 있습니까?
내 응용 프로그램의 flex 부분에 PreAuthenticatedProcessingFilterEntryPoint를 사용하는 보안 컨텍스트 정의가 하나 있습니다. 내 응용 프로그램의 다른 부분에 html 양식을 사용하여 표준 양식 로그인을 사용하는 다른 정의를 어떻게 가질 수 있습니까? 여기 내가 현재 가지고있는 것 :
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.1.xsd">
<http auto-config="true" access-denied-page="/admin/access-denied">
<intercept-url pattern="/admin/login*" filters="none"/>
<intercept-url pattern="/admin/access-denied" filters="none"/>
<intercept-url pattern="/admin/**/*" access="ROLE_ADMIN" />
<form-login login-page="/admin/login" authentication-failure-url="/admin/login?login_error=1"
default-target-url="/admin/index" login-processing-url="/admin/login-process"/>
<logout logout-success-url="/admin/login"/>
</http>
<global-method-security jsr250-annotations="enabled" />
<beans:bean id="preAuthenticatedEntryPoint" class="org.springframework.security.ui.preauth.PreAuthenticatedProcessingFilterEntryPoint" >
</beans:bean>
<beans:bean id="userAccountManager" class="com.mycomp.service.managers.jpa.UserAccountJpaManager" />
<beans:bean id="userService" class="com.mycomp.auth.DefaultUserDetailsService" />
<beans:bean id="defaultPasswordEncoder" class="com.mycomp.auth.DefaultPasswordEncoder" />
<authentication-provider user-service-ref="userService">
<password-encoder ref="defaultPasswordEncoder"/>
</authentication-provider>
</beans:beans>
내가 뭘하고 싶습니다 관리 사이트에있는 URL에 대한 다른 인증 공급자를 사용하고, 현재 가지고있는 플렉스 응용 프로그램입니다. 그래서 나는 다른 userDetailsService 빈을 사용하는 admin url에 대한 보안을 원한다.
해결법
-
==============================
1.최근까지도 까다 롭지 만 지금은 쉽습니다!
최근까지도 까다 롭지 만 지금은 쉽습니다!
Spring Security는 버전 3.1의 시나리오에 대한 지원을 추가했습니다. 현재 SEC-1171에 의해 구현 된 출시 후보로 제공됩니다. 구문에 대한 자세한 내용은 3.1 설명서에 있습니다.
사용하기가 아주 쉽습니다. 기본적으로 Spring 보안 설정에서 각 컨텍스트에 대해 하나씩 여러 개의 http 요소를 정의합니다. 우리는 이것을 다음과 같이 사용합니다 :
<!-- Configure realm for system administration users --> <security:http pattern="/admin/**" create-session="stateless"> <security:intercept-url pattern='/**' access='ROLE_ADMIN' requires-channel="https" /> <security:custom-filter position="PRE_AUTH_FILTER" ref="preAuthFilter" /> </security:http> <!-- Configure realm for standard users --> <security:http auto-config="true" access-denied-page="/error/noaccess" use-expressions="true" create-session="ifRequired"> <security:form-login ... ... </security:http>
주목할 핵심 사항은 첫 번째 http 요소에서 pattern = "/ admin / **"입니다. 이것은 Spring에게 / admin 아래의 모든 URL이 기본 컨텍스트가 아닌 해당 컨텍스트에 종속된다는 것을 알려줍니다. 따라서 / admin 아래의 URL은 대신 사전 인증 필터를 사용합니다.
-
==============================
2.각 필터 체인을 다른 URL 패턴에 매핑합니다.
각 필터 체인을 다른 URL 패턴에 매핑합니다.
<bean id="myfilterChainProxy" class="org.springframework.security.util.FilterChainProxy"> <security:filter-chain-map pathType="ant"> <security:filter-chain pattern="/flex" filters="filterF"/> <security:filter-chain pattern="/**" filters="filter1,filter2,filter3"/> </security:filter-chain-map> </bean>
-
==============================
3.Spring Security 필터 체인이 어플리케이션의 어떤 부분을 가로 챌 것인가에 관한 것입니다. 어딘가에 XML 구성 (간단한 태그 설정을했는지 여부에 따라 다름)에 다음과 같은 인터셉트 정규식이 있습니다.
Spring Security 필터 체인이 어플리케이션의 어떤 부분을 가로 챌 것인가에 관한 것입니다. 어딘가에 XML 구성 (간단한 태그 설정을했는지 여부에 따라 다름)에 다음과 같은 인터셉트 정규식이 있습니다.
<intercept-url pattern="/**" ...>
다른 구성을 사용하는 다른 가로 채기 패턴 (일명 보안 필터 체인의 다른 부분)을 가질 수 있습니다. 현재 구성 XML을 게시하면 좀 더 구체적인 답변을 드릴 수 있습니다.
편집 : 현재 http 태그를 사용하여 스프링 보안 구성을 정의하고 있습니다. 이 태그는 바로 가기 / 도우미로 사용되며 자동으로 수동으로 설정할 수있는 많은 보안 필터 체인을 정의합니다. 귀하의 유스 케이스가 자동 설정 패러다임에 맞지 않기 때문에 수동으로 다른 URL 패턴에 대한 필터 체인을 설정해야합니다 (내 게시물에서 볼 수 있듯이). 사용자 정의 UserDetailsService를 취하는 자체 PreAuthenticationFilter를 만들고 필터 체인 인터셉트 매핑에 적절한 위치에 추가 할 수 있습니다.
from https://stackoverflow.com/questions/1070420/can-i-have-multiple-security-contexts-with-spring-security by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 기반 Java 애플리케이션에서 단일 실행 가능 JAR 작성 (0) | 2019.03.16 |
---|---|
[SPRING] GWT 서비스 예외 로깅에 대한 유용한 정보 (0) | 2019.03.16 |
[SPRING] Maven 프로젝트 용 애플리케이션 설정 파일은 어디에 두어야하나요? (0) | 2019.03.16 |
[SPRING] Spring Boot Maven Plugin을 사용할 때 jar 파일에서 Spring Boot 애플리케이션의 자원이 누락된다. (0) | 2019.03.16 |
[SPRING] JAXB를 사용하여 XML에서 List를 반환하는 Spring 4 REST 프로그램 (0) | 2019.03.16 |