B3 관련하여 본사 AD와 연동을 위해 Spring Security와 AD연동을 테스트 해 보았다.
아래와 같이 spring 설정을 하게 되면 Spring Security는 잘 동작 한다.
이 경우 인증 뿐만 아니라 AD의 그룹기능을 이용하여 Spring Security의 Role도 연동할 수 있게 된다. ( DefaultLdapAuthoritiesPopulator class의 "rolePrefix" 부분을 설정하면 AD의 그룹명 앞에 Prefix를 붙여서 작업할 수 있다. )
하지만 이 경우의 문제점은 AD의 관리자 권한을 가지고 있어야만 된다는 것이다.
여러 모로 생각해 보아도 우리에게 AD 관리자 권한을 열어 줄리는 만무한데...-.-
아래 내용은 http://maniezhilan.blogspot.com/2008/10/spring-security-204-with-active.html 에서 퍼왔음.
[applicationContext-security.xml]
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:s="http://www.springframework.org/schema/security"
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">
<s:http>
<s:intercept-url pattern="/secure/extreme/**" access="ROLE_eCommunications"/>
<s:intercept-url pattern="/secure/**" access="IS_AUTHENTICATED_REMEMBERED"/>
<s:intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<s:form-login/>
<s:anonymous/>
<s:logout/>
</s:http>
<bean id="contextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
<constructor-arg value="ldap://192.168.192.71:3268/DC=dev,DC=247realmedia,DC=co,DC=kr?sAMAccountName?sub?(objectClass=*)"/>
<property name="userDn" value="CN=kim ducheol,CN=Users,DC=dev,DC=247realmedia,DC=co,DC=kr"/>
<property name="password" value="XXXXXXX"/>
</bean>
<bean id="secondLdapProvider" class="org.springframework.security.providers.ldap.LdapAuthenticationProvider">
<s:custom-authentication-provider />
<constructor-arg>
<bean class="org.springframework.security.providers.ldap.authenticator.BindAuthenticator">
<constructor-arg ref="contextSource"/>
<property name="userSearch">
<bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
<constructor-arg index="0" value=""/>
<constructor-arg index="1" value="(&(sAMAccountName={0})(objectclass=user))"/>
<constructor-arg index="2" ref="contextSource" />
</bean>
</property>
</bean>
</constructor-arg>
<constructor-arg>
<bean class="org.springframework.security.ldap.populator.DefaultLdapAuthoritiesPopulator">
<constructor-arg ref="contextSource" />
<constructor-arg value="" />
<property name="rolePrefix" value="ROLE_"/>
<property name="searchSubtree" value="true"/>
<property name="convertToUpperCase" value="false"/>
</bean>
</constructor-arg>
</bean>
</beans>
'개발자세상' 카테고리의 다른 글
LDAP Query (0) | 2009.09.08 |
---|---|
Spring Security 와 Active Directory 연동 -2 (0) | 2009.09.01 |
UML 2.0 과 유스케이스 강의를 듣고 (0) | 2009.08.28 |
RPM 관련 명령 (0) | 2009.08.18 |
kernel ARG_MAX 값 (0) | 2009.05.08 |