【发布时间】:2015-03-28 10:20:29
【问题描述】:
我刚刚开始使用 Grails,但我仍在努力解决它。 在我的系统中,我有两种类型的控制器,普通控制器和休息控制器。 如果任何用户登陆通常控制器中的操作,我希望该用户被重定向到他将进行身份验证的 CAS 服务。然后 CAS 应该用票重定向回我的系统。鉴于票,我必须要求同样的服务给我经过身份验证的实体标识符 (SSN)。拥有 SSN,我必须要求其他服务给我定义该用户权限的组。然后我必须签入第三个服务以获取有关用户的所有其他信息并在我的数据库中创建一个用户条目。完成所有这些并让整个过程顺利进行后,用户的工作流程应该继续。 如果针对休息控制器的操作完成请求,则应返回 403 标头 json 格式错误。 整个事情是无国籍的。身份验证令牌应保留在标头中,令牌存储在客户端。 我认为这是一个非常自定义的用户身份验证解决方案,当我不喜欢自动魔法时,这就是这种情况,唉,我在这里。
所以我现在在哪里。我在我的 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 security的过滤器和上下文到底是什么?也许有一些文章深入解释了整个过程是如何工作的。
提前谢谢你
【问题讨论】:
-
我还发现了一篇文章:blogs.bytecode.com.au/glen/2010/01/15/…我想知道这是否可以帮助我并且是有效的做事方式。
标签: rest grails spring-security cas