[SPRING] 스프링 보안 - 다중 인증 제공자
SPRING스프링 보안 - 다중 인증 제공자
내 웹 앱에 여러 인증 관리자가 있습니다 (하나는 WEB 액세스 용 API). API는 기본 인증 서비스 만 제공해야합니다 (아래에서 볼 수 있듯이 봄 보안 마크 업을 통해 구성됩니다).
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<security:authentication-manager alias="apiAuthenticationManager">
<security:authentication-provider ref="apiAuthenticationProvider" />
</security:authentication-manager>
<security:authentication-provider >
<security:user-service>
<security:user name="apiadmin" password="password" authorities="ROLE_API_ADMIN" />
<security:user name="apiuser" password="otherpassword" authorities="ROLE_API_USER" />
</security:user-service>
</security:authentication-provider>
...
하위 - 빈 설정에 의해 오버라이드되기를 원하기 때문에 나는 인증 공급자를 인라인 할 수 없다.
내 문제는 security : authentication-provider 요소에서 별칭 / ID를 정의하여 인증 관리자에서이를 참조 할 수 없다는 점입니다. 이 간단한 해결 방법이 있습니까?
해결책:
나는 마침내 빈 bean 설정으로 다이빙하지 않고 네임 스페이스 방식을 사용하는 방법을 알아 냈습니다. :)
<security:user-service id="apiUserDetailsService">
<security:user name="apiadmin" password="password" authorities="ROLE_API_ADMIN" />
<security:user name="apiuser" password="otherpassword" authorities="ROLE_API_USER" />
</security:user-service>
<security:authentication-manager alias="apiAuthenticationManager">
<security:authentication-provider user-service-ref="apiUserDetailsService"/>
</security:authentication-manager>
해결법
-
==============================
1.이 스프링 시큐리티 XML 네임 스페이스는 단지 XML을 체계적으로 정리하는 방법 일 뿐이다. 일반
설정으로 정확히 같은 해결책을 얻을 수 있습니다. 그렇게하면 평소와 같이 ID를 사용할 수 있습니다. 이 블로그 게시물은 도움이 될 것입니다. 이 스프링 시큐리티 XML 네임 스페이스는 단지 XML을 체계적으로 정리하는 방법 일 뿐이다. 일반
설정으로 정확히 같은 해결책을 얻을 수 있습니다. 그렇게하면 평소와 같이 ID를 사용할 수 있습니다. 이 블로그 게시물은 도움이 될 것입니다. -
==============================
2.네임 스페이스에서 이름은 @Service ( "userDetailsService")와 함께 java에 이름을 추가 할 수 있습니다.
네임 스페이스에서 이름은 @Service ( "userDetailsService")와 함께 java에 이름을 추가 할 수 있습니다.
빈을 정의하고 체인에 추가 할 수도 있습니다.
<bean id="myFilter" class="a.b.c.myFilter"> <security:custom-filter before="BASIC_PROCESSING_FILTER" /> <property name="authenticationManager" ref="_authenticationManager" /> </bean> <bean id="myProvider" class="a.b.c.myProvider"> <security:custom-authentication-provider /> <property name="userDetailsService" ref="userDetailsService" /> </bean> <security:http> [...] </security:http>
_authenticationManager는 namespace에 등록 된 bean의 이름입니다.
이는 기본 인증 전에 실행됩니다.
from https://stackoverflow.com/questions/8999985/spring-security-multiple-authentication-providers by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 애플리케이션이 성공적으로 전개되면 코드를 실행한다. (0) | 2019.02.20 |
---|---|
[SPRING] 스프링 의존성을 지닌 uber jar 만들기 (0) | 2019.02.20 |
[SPRING] DIV 내용을 5 초마다 자동 새로 고침 코드가 작동하지 않음 (0) | 2019.02.20 |
[SPRING] Spring과 GlassFish 5에서 분산 트랜잭션 XA를 수행하는 방법은 무엇입니까? (0) | 2019.02.20 |
[SPRING] Intellij는 스프링 부팅으로 hql을 올바르게 구성하는 방법을 설명합니다. 이제 Persistence QL 쿼리에 오류가 발생합니다. (0) | 2019.02.20 |