我正在尝试在Grails中对CAS进行身份验证并针对LDAP授权设置Spring Security。我找到了几个例子的例子(我现在有大约20个浏览器标签),但是他们都没有回答整个问题。大多数示例都是Grails + CAS或Grails + LDAP,但没有Grails + CAS + LDAP的示例。在使用CAS和LDAP的Grails中使用Spring Security
回答
所以我得到了它的工作,它确实不是那么糟糕,但我希望我先看过@cantoni的example。这本来会很简单。我的设置比他更简单,所以我会在这里添加它。
安装Spring Security Core,CAS和LDAP插件。 重要提示:直到spring-security-cas:1.0.5
已更新,我不会尝试使用新的spring-security-core:2.0-RC2
和spring-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的时候,我不是来运行快速入门命令。
配置核心和CAS插件的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'
可以去掉,securityConfigType
,如果你想使用的,而不是拦截地图标注interceptUrlMap
。
配置您的UserDetailsService委托给LDAP在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){
}
我已经共享了(GitHub)集成了Grails(2.2.0)+ Spring Security Plugin + CAS + LDAP的示例应用程序。
我的工作基于此链接:http://dominikschuermann.de/index.php/2010/11/using-grails-with-cas-and-ldap/,但不幸的是,链接不活跃。
https://github.com/luizcantoni/TestCAS-LDAP-Grails
这个应用程序使用身份验证CAS。经过身份验证后,CAS重定向到Grails,该Grails使用一些Active Directory信息(电子邮件和名称)填充(通过ldap)用户。
这是一些AD信息填充用户的文件:https://github.com/luizcantoni/TestCAS-LDAP-Grails/blob/master/src/groovy/example/PrepopulateUserDetailsService.groovy
检查resources.groovy:https://github.com/luizcantoni/TestCAS-LDAP-Grails/blob/master/grails-app/conf/spring/resources.groovy
最后,Config.groovy中与CAS和LDAP配置:https://github.com/luizcantoni/TestCAS-LDAP-Grails/blob/master/grails-app/conf/Config.groovy
- 1. Grails Spring Security和CAS问题
- 2. Grails Spring Security LDAP
- 3. Grails和Spring Security的CAS插件
- 4. Spring Security和CAS
- 5. 使用Spring Security笨头笨脑的LDAP Grails中
- 6. Grails Spring Security使用https
- 7. 如何使用spring-security-core-ldap插件在grails中实现LDAP身份验证?
- 8. 使用spring-security-core-ldap插件在grails中实现LDAP身份验证?
- 9. Spring Security不能使用Spring LDAP
- 10. 使用CAS + Spring Security实现SSO
- 11. WAS 6.1上使用Spring Security的LDAP SSL
- 12. 用Spring Security实现CAS 3
- 13. 使用CAS Proxy和Spring Security调用REST风格的服务
- 14. 配置Grails的Spring Security的LDAP插件
- 15. Spring Security和LDAP - java.io.NotSerializableException:com.sun.jndi.ldap.LdapCtx
- 16. Grails在数据库中没有用户/角色的spring-security-ldap
- 17. Spring Security和CAS集成
- 18. 使用Spring和CAS的SSO
- 19. 使用LDAP身份验证和授权以Spring和CAS移动Spring Web项目
- 20. 从使用Spring Security(CAS)的Grails应用程序注销时出错
- 21. Spring Security的LDAP
- 22. Grails Spring Security ui插件与ldap权限?
- 23. CAS - Spring Security 3.1书
- 24. Spring Security LDAP IncorrectResultSizeDataAccessException
- 25. 如何锁定grails spring security/cas应用程序?
- 26. 使用Grails Spring Security进行CSRF保护
- 27. “Severe:Error Listener Start”使用spring-security-ldap插件部署Grails应用程序1.0.6
- 28. Spring Security LDAP VS CAS VS OpenID之间的区别
- 29. 用于身份验证的Grails Spring Security X509和用于授权的LDAP
- 30. 如何在使用JOSSO和Spring Security的Grails应用程序中从LDAP获取定制属性?
你不知道多少,这帮助了我。非常感谢。 – grantmcconnaughey
非常欢迎。很高兴在一次的stackoverflow的另一边。我从其他人的回答中受益匪浅,我很高兴能够真正帮助别人。 – 10GritSandpaper