使用Spring Security Core插件的自定义单点登录身份验证服务

arc*_*ree 5 grails spring-security

我正在研究Grails应用程序,并希望与自定义单点登录服务集成(不是CAS,但类似).我正在努力寻找我需要定制的所有部分才能实现这一目标.有人可以向我解释一下我需要用什么来完成这个工作吗?我已经阅读了插件上的文档,但它假设我知道要覆盖哪些bean以及放置所有需要的文件的位置.

根据我在每一点下面的研究,我已经阻止了我认为需要做的事情.

运营顺序

1-用户请求安全内容(目前应用程序中的所有内容都是安全的)

我相信这个设置在Config.groovy文件中:

 grails.plugins.springsecurity.rejectIfNoRule = true
 grails.plugins.springsecurity.securityConfigType = "InterceptUrlMap"
 grails.plugins.springsecurity.interceptUrlMap = [
     '/**':['ROLE_ADMIN']
 ]
Run Code Online (Sandbox Code Playgroud)

2- Spring Security检查用户是否在身份验证服务提供的cookie中设置了特定值

我猜我需要创建一个身份验证过滤器,但我不知道它放在哪里或它应该是什么样子.

  • 如果他们不这样做,用户将被重定向到此自定义SSO服务,他们登录后,一旦通过身份验证,用户就会被重定向回我的应用程序(使用新的cookie集)

3- Spring安全性检查cookie值并根据自定义服务对其进行验证(通过HTTP POST)

从一些研究中,我认为我需要使用PreAuthenticatedProcessingFilter,但我无法找到任何如何做到这一点的例子.

4-自定义服务返回一系列名称/值对,然后需要在本地应用程序数据库中创建用户(或者如果用户的数据已经在数据库中,则更新"lastLoggedIn"的时间戳)

我相信这是在与3号相同的PreAuthenticatedProcessingFilter或GrailsUserDetailsS​​ervice中完成的

5-用户的身份验证在会话中缓存一段时间(6-8小时),因此每次用户请求新资源时都不需要对SSO服务进行重新验证.

我不确定这是否是内在完成的事情,或者我是否需要添加代码来执行此操作(并且还设置会话超时)