2011-03-15 5 views
0

저는 스프링 보안을 상당히 새로운 사용자로 사용합니다.스프링 보안 : IP를 통한 인증을 지원하는 새로운 ROLE 추가

이전에 내 웹 응용 프로그램에 대해 폼 기반 인증을 수행하도록 스프링 보안을 구성했습니다.

나는 어떤 컨트롤러/메소드가 ROLE_USER 대 익명을 요구하는지 표시하기 위해 주석을 사용했으며 인증을 수행하기 위해 내 자신의 daoAuthenticationProvider를 구현했습니다.

내가 입니다. 이제 BasicAuthentication에서 인증을 필요로하는 서비스와 내 DB에 대한 IP 확인을 수행하는 REST 서비스가 구현됩니다.

그래서 REST 서비스 컨트롤러에 정의한 새로운 역할 ROLE_IP_AUTH가 있습니다.

저는이 시점에서 약간 압도되었습니다. 누군가 내가 다음 단계를 취해야 할 것에 대한 간단한 설명을 줄 수 있습니까?

  • 내가 새로운 < 보안을 생성해야합니까 : HTTP > 요소를 새로운 역할?
  • 이 전환해야합니까 FilterChainProxy? 그렇다면 에 어떤 필터를 포함해야합니까?
  • 기존 DaoAuthenticationProvider 클래스에서 이것을 처리해야합니까?

기본적으로 나는 어느 방향으로 가고 있는지 알고 싶다. 나는 그곳에 도착할만큼 충분히 알고 있다고 생각한다. 봄에는 어디에서나 얻을 수있는 5 가지 방법이있다.

<security:http auto-config="false" 
       entry-point-ref="authenticationEntryPoint" > 
    <security:logout logout-url="/logout" /> 
    <security:anonymous enabled="false"/> 
    <security:custom-filter position="FORM_LOGIN_FILTER" ref="usernamePasswordAuthenticationFilter" /> 
    <security:custom-filter position="ANONYMOUS_FILTER" ref="anonymousAuthFilter" /> 
</security:http> 

내 남은 문제는 내가 내 자신의 IP 유효성 검사를 구현할 수있는 방법입니다 다음과 같이


추가 정보 나의 현재 구현은 구성 요소를 가지고있다. BasicAuth 필터를 사용자 정의 필터를 사용하여 추가하고 IP를 검사하는 자체 기본 인증 필터를 구현할 수 있습니다. 그러나 나는 REST 서비스가 사용하는 ROLE_IP_AUTH에만 해당 필터를 적용하는 방법을 모호하게 생각하고있다.

답변

1

@Ritesh의 대답은이 퀘스트를 다른 방식으로 재구성하는 데 매우 도움이되었습니다. 이 문제를 해결 또 다른 좋은 포스트는 여기에 있습니다 :

Spring security - how to mention both form based and basic authentication

궁극적으로 나의 이해가된다 @Ritesh이 3.0.x 버전에서 알 수 있듯이 유권자을 통해 그것을 할, 또는 여러 < HTTP .../> 요소를 사용 그대로 위의 링크에서 설명한대로 3.1.0.RC1 (17mar2011 현재 버전)에서 사용할 수 있습니다.

0

요소에 http-basic을 추가하기 만하면됩니다.

<sec:http-basic/> 

또한 생성 세션 = 당신이 REST 서비스에 대한 세션을 추가하지 않는 원인이 없다 "결코"추가합니다. 특수 URL 패턴에 대한 귀하의 서비스가 도움이 될 것입니다.

<sec:intercept-url pattern="/service/**" access="ROLE_IP_AUTH" /> 
+0

몇 가지 명확한 정보를 추가했습니다.나는 폼 필터의 ROLE_USER에서 BasicAuth 필터로 인증되는 ROLE_IP_AUTH를 어떻게 segrgate하는지, 그리고 어딘가에 정의하지 않으면 스프링이 정확히 어느 것을 사용할지를 어떻게 알 수 있는지 이해하는 데에는 여전히 약간의 퍼지가있다. –

+0

인증에 따라 역할을 추가하기 위해 사용자 정의 AuthenticationProvider를 추가 할 수 있습니다. 또는 로그인을 사용하고자하지만 다른 역할을 사용하려면 사용자 정의 SessionAuthenticationStrategy를 사용하여 로그인 후 역할을 변경할 수 있습니다. ServletPath. –

+1

@David Parks Philipp Hügelmeyer의 답변은 URL을 기반으로 액세스를 제공하는 것 같습니다. http://books.google.com/books?id=IK2SMsT6XLYC&pg=PA201&lpg=PA201 페이지에서 Spring Receipe (2nd Ed) # 201 페이지를 참조하십시오. 이 예에서 IP_LOCAL_HOST 역할은 유권자를 호출하기 위해 선언되며 사용자에게 할당되지 않습니다. 유권자 솔루션은 사용자에게 새 역할을 할당하는 대신 AccessDecionManager에 결정을 위임하려는 경우 작동합니다. 이 접근법은 귀하에게 도움이 될 수 있으며 유권자를 통해 검증을 한 후에 ROLE_USER를 부여하면됩니다. – Ritesh