我正在开发Grails应用程序,并希望与自定义单点登录服务集成(不是CAS,但类似)。我正在努力寻找我需要定制的所有部分才能实现这一目标。有人可以向我解释一下我需要用什么来完成这个工作吗?我已经阅读了插件上的文档,但它假设我知道要覆盖哪些bean以及放置所有需要的文件。
根据我在每个方面的研究,我已经阻止引用了我认为需要做的事情。
运营顺序
1 - 用户请求安全内容(目前应用程序中的所有内容都是安全的)
我相信此设置位于Config.groovy文件中:
grails.plugins.springsecurity.rejectIfNoRule = true
grails.plugins.springsecurity.securityConfigType = "InterceptUrlMap"
grails.plugins.springsecurity.interceptUrlMap = [
'/**':['ROLE_ADMIN']
]
2 - Spring Security检查用户是否在身份验证服务提供的cookie中设置了特定值
我猜我需要创建一个身份验证过滤器,但我不知道它放在哪里或它应该是什么样的。
3 - Spring安全检查cookie值并根据自定义服务验证(通过HTTP POST)
从某些研究中,我认为我需要使用PreAuthenticatedProcessingFilter,但我无法找到任何如何做到这一点的例子。
4 - 自定义服务返回一系列名称/值对,然后需要在本地应用程序数据库中创建用户(如果用户的数据,则更新“lastLoggedIn”的时间戳)已经在数据库中)
我相信这是在与3号相同的PreAuthenticatedProcessingFilter或GrailsUserDetailsService中完成的
5 - 用户的身份验证在会话中缓存一段时间(6-8小时),因此每次用户都不需要对SSO服务进行重新验证请求新资源。
我不确定这是否是本身已经完成的事情,或者我是否需要添加代码来执行此操作(并且还设置会话超时)