我刚刚开始使用Grails,我还在努力理解它。在我的系统中,我有两种类型的控制器,普通控制器和rest控制器。如果ananymous用户在通常的控制器中执行操作,我希望该用户被重定向到CAS服务,在那里他将进行身份验证。然后,CAS应该使用票证重定向回我的系统。对于票证,我必须请求完全相同的服务来提供经过身份验证的实体的标识符(SSN)。有了SSN,我必须请求其他服务给我定义该用户权限的组。然后,我必须检入到第三个服务,以获取有关该用户的所有附加信息,并在我的数据库中创建一个用户条目。在完成所有这些工作并使整个过程顺利进行之后,用户的工作流程应该继续下去。如果针对rest控制器的操作执行请求,则应返回403 headered json格式的错误。整个过程是无状态的。Auth token应保留在headers中,token应存储在客户端。我认为这是一个相当自定义的用户身份验证解决方案,这就是当我不喜欢自动的时候的那种情况,唉,我在这里
所以我现在的位置。我在我的grails应用程序中添加了3个插件:
compile ":spring-security-core:2.0-RC4"
compile ":spring-security-cas:2.0-RC1"
compile ":spring-security-rest:1.4.1"我设置了以下配置(域名模糊):
grails.plugin.springsecurity.userLookup.userDomainClassName = 'package.User'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'package.UserRole'
grails.plugin.springsecurity.authority.className = 'package.Role'
grails.plugin.springsecurity.cas.loginUri = '/login'
grails.plugin.springsecurity.cas.serverUrlPrefix = 'https://example.com'
grails.plugin.springsecurity.cas.proxyCallbackUrl = '${grails.serverURL}/secure/receptor'
grails.plugins.springsecurity.cas.serviceUrl ="/j_spring_cas_security_check"但我非常确定,我到处都错过了一些和平的东西。它现在在做什么?现在,未经授权的用户被重定向到/auth/login,通常的spring安全登录表单会在那里欢迎我进行身份验证。我希望我能把这种行为关掉。
首先,我想问一下,我如何才能让spring security将我重定向到CAS进行身份验证,而不是通常的身份验证。
其次,我想问一下如何处理为身份验证过程实现自定义行为的问题。
第三,谁能用两句话解释一下什么是spring安全的过滤器和上下文?也许有一些文章深入解释了整个过程是如何工作的。
提前谢谢你
发布于 2015-01-29 20:48:06
有一个bug被报道和讨论:https://jira.grails.org/browse/GPSPRINGSECURITYCAS-4#issue-tabs长话短说,一个人必须从cas插件参数中复制所有默认的配置参数。这会导致cas插件正确初始化。
我将继续寻找其他两个的修复/解释。
https://stackoverflow.com/questions/28210514
复制相似问题