2013-05-07 5 views
1

우리는 스프링 보안 &을 사용하여 웹 애플리케이션을 인증합니다. LDAP 구성에는 여러 개의 userndn 패턴이 있습니다. applicationContext-security.xml 파일에서 여러 userdn 패턴을 구성하는 방법을 알고 싶습니다. 내가 XML 파일의 위 구성을 제공 할 때 아래의 구성이 스프링 보안 LDAP 인증 다중 dn 패턴

<b:bean id="ldapProvider" 
    class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider"> 
    <b:constructor-arg> 
     <b:bean 
      class="com.intl.set.him.mait.security.CustomLdapAuthenticator"> 
      <b:constructor-arg ref="ldapContextSource" /> 
      <b:property name="userDnPatterns" value="cn={0},OU=GEN,OU=Users"/> 
      <b:property name= "commonNameQuery" value = "select USER_CN from emt.sec_users1 where user_id=?"/> 
      <b:property name="datasource" ref="dataSourceMSSQL"/> 

</b:bean> 

를 지정, 특정 위치에 대한 DN 패턴에 해당하는 사용자는 로그인 할 수 있습니다. XML 파일에서 여러 userdn 패턴을 구성하는 방법을 알고 싶습니다.

이 문제에 대한 도움을 주시면 감사하겠습니다. 감사합니다

+0

웹에 내부 정보를 게시하지 마십시오 !!! – Michael

답변

0

빈은 지정된 클래스의 생성자 (대개 인수 및/또는 속성 포함)로 작동합니다. 당신은 단순히 자신의 하위 클래스에서 그 클래스를 확장 할 경우, 서브 클래스에서 supoerclass '생성자에 인자와 설정 속성을 전달할 수 있습니다

CustomLdapAuthenticationProvider.java

public class CustomLdapAuthenticationProvider extends LdapAuthenticationProvider { 
    //your constructor 
    public CustomLdapAuthenticationProvider(unParsedArguments) { 
     //some logic to parse the arguments as desired 
     super(parsedArguments); 
     //set super's properties as desired 

    } 

    //other methods as needed/required 
} 

이 방법은 당신에게 상당한 유연성을 제공 애플리케이션 디자인, 그리고 이것이 오픈 소스에 동기를 부여합니다. 확장, 재정의 등은 쉽습니다. 대부분 이미 그렇게하고 있습니다.

그런 다음, 변경하려면 applicationContext-security.xml :

<bean id="ldapProvider" 
     class="your.project.package.CustomLdapAuthenticationProvider"> 
    <constructor-arg value="firstArgument"/> 
    <constructor-arg value="secondArgument"/> 
    <!-- etc. //--> 
    <property name="fieldName" value="valueToBeSet"/> 
</bean> 

물론,이 인위적이지만, 당신이해야 할 일을 참조해야합니다, 재정/과부하를 확장하고 논리에 따라 슈퍼의 메소드/생성자를 호출 정적 템플릿에 반대했다.

이 정보가 도움이되기를 바랍니다.