2013-07-25 3 views
2

CAS에 대해 인증하고 LDAP에 대해 인증하는 Grails에서 스프링 보안을 설정하려고합니다. 나는 몇 가지 예를 발견했다. (나는 지금 약 20 개의 브라우저 탭을 가지고있다.) 그러나 그들 중 누구도 전체 질문에 대답하지는 않는다. 대부분의 예제는 Grails + CAS 또는 Grails + LDAP이지만 Grails + CAS + LDAP의 예제는 없습니다.Grails에서 CAS와 LDAP를 사용하여 스프링 보안 사용

답변

8

는 일부 AD 정보를 사용자에게 웁니다 파일입니다

그래서 나는 그것을 작동 시켰고, 그렇게 나쁘지는 않았지만, 나는 처음으로 @ cantoni의 example을 보았 더라면 좋겠다. 이 일이 정말 쉬울 것입니다. 나의 셋업은 그의 것보다 조금 더 간단하다. 그래서 여기에 그것을 추가 할 것이다.

스프링 보안 코어, CAS 및 LDAP 플러그인을 설치하십시오. 중요 :spring-security-cas:1.0.5이 업데이트 될 때까지 새 spring-security-core:2.0-RC2spring-security-ldap:2.0-RC2을 사용하지 않겠습니다. CAS 플러그인이 작동하지 않는 것 같습니다.

plugins { 
    .... 
    //security 
    compile ":spring-security-core:1.2.7.3" 
    compile ":spring-security-cas:1.0.5" 
    compile ":spring-security-ldap:1.0.6" 
    ... 
    } 

당신은 당신이 또한 내가 아니라고하여 DaoAuthenticationProvider를 사용하지 않는 경우 빠른 시작 명령을 실행할 필요가 없습니다. 에서

구성 코어 및 캐스 플러그인 Config.groovy 파일

//Spring Security Core Config 
grails.plugins.springsecurity.providerNames = ['casAuthenticationProvider'] 
grails.plugins.springsecurity.rejectIfNoRule = true 
grails.plugins.springsecurity.securityConfigType = "InterceptUrlMap" 
grails.plugins.springsecurity.interceptUrlMap = [ 
    '/js/**': ['IS_AUTHENTICATED_ANONYMOUSLY'], 
    '/css/**': ['IS_AUTHENTICATED_ANONYMOUSLY'], 
    '/images/**': ['IS_AUTHENTICATED_ANONYMOUSLY'], 
    '/login/**': ['IS_AUTHENTICATED_ANONYMOUSLY'], 
    '/logout/**': ['IS_AUTHENTICATED_ANONYMOUSLY'], 
    '/**': ['hasAnyRole("ROLE_OPERATOR","ROLE_ADMIN")'] 
] 

//Spring Security CAS Config 
grails.plugins.springsecurity.cas.loginUri = '/login' 
grails.plugins.springsecurity.cas.serviceUrl = 'http://server.company.com:8080/app-name/j_spring_cas_security_check' 
grails.plugins.springsecurity.cas.serverUrlPrefix = 'https://sso.company.com/cas' 
grails.plugins.springsecurity.cas.proxyCallbackUrl = 'http://server.company.com:8080/app-name/secure/receptor' 
grails.plugins.springsecurity.cas.proxyReceptorUrl = '/secure/receptor' 

당신은 생략 할 수 , securityConfigTypeinterceptUrlMap 대신 인터셉터지도의 주석을 사용하려는 경우.

resources.groovy 당신이 나에게 도움이 얼마나 아무 생각이

// load ldap roles from spring security 
initialDirContextFactory(org.springframework.security.ldap.DefaultSpringSecurityContextSource, 
    "ldap://123.45.67.89:389"){ 
    userDn = "myLdapUser" 
    password = "myLdapPwd" 
} 

ldapUserSearch(org.springframework.security.ldap.search.FilterBasedLdapUserSearch, 
    "DC=foo,DC=company,DC=com", "sAMAccountName={0}", initialDirContextFactory){ 

} 

ldapAuthoritiesPopulator(org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator, 
    initialDirContextFactory,"OU=foo,DC=bar,DC=company,DC=com"){ 
     groupRoleAttribute = "cn" 
     groupSearchFilter = "member={0}" 
     searchSubtree = true 
     rolePrefix = "ROLE_" 
     convertToUpperCase = true 
     ignorePartialResultException = true 
} 

userDetailsService(org.springframework.security.ldap.userdetails.LdapUserDetailsService,ldapUserSearch,ldapAuthoritiesPopulator){ 
} 
+0

에서 LDAP에 위임 할 당신의 UserDetailsService를 구성합니다. 정말 고마워. – grantmcconnaughey

+1

대단히 환영합니다. 한 번만 stackoverflow의 다른 측면에있는 것이 좋다. 나는 다른 사람들의 답변에서 많은 도움을 얻었으므로 실제로 다른 사람을 도울 수있어서 기쁩니다. – 10GritSandpaper

3

Grails (2.2.0) + Spring Security Plugin + CAS + LDAP를 통합 한 샘플 앱을 (GitHub) 공유했습니다.

내 작품은이 링크를 기반으로합니다 : http://dominikschuermann.de/index.php/2010/11/using-grails-with-cas-and-ldap/,하지만 불행히도 링크가 활성 상태가 아닙니다.

https://github.com/luizcantoni/TestCAS-LDAP-Grails

애플리케이션 정보는 CAS를 사용하여 인증한다. 인증 후, CAS는 사용자에게 Active Directory 정보 (전자 메일 및 이름)를 채 웁니다 (LDAP를 통해). https://github.com/luizcantoni/TestCAS-LDAP-Grails/blob/master/src/groovy/example/PrepopulateUserDetailsService.groovy

확인 resources.groovy : 다음 CAS 및 LDAP 구성을 마지막으로 https://github.com/luizcantoni/TestCAS-LDAP-Grails/blob/master/grails-app/conf/spring/resources.groovy

의 Config.groovy 파일 : https://github.com/luizcantoni/TestCAS-LDAP-Grails/blob/master/grails-app/conf/Config.groovy