Spring Security + Tomcat SSO
请教各位大神,
我有多个 Webapps 部署在一个 Tomcat 上。每个 Webapp 都使用 Spring Security 控制机制,进行用户认证和权授。
这个后台认证和权授的数据库是统一的。
我希望能在这些 webapp 之间实现 SSO – Single Sign On -- 其中一个 Webapp 上登录后,就可以按权限访问其它的 webapp。
我现在能实现单个 Webapp 用 Spring Security 的认证和授权控制,但不知道在这种情况下(每个 Webapp 都部署在同一个 Tomcat中)如何实现 SSO?
我在 StackOverflow 上也没有找到答案,恳请达人指点。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
CAS 现在大多数SSO都是采用的CAS解决方案,楼主可以研究一下。
SSO 流程图
SSO 是利用
cookie
来实现的。简单来说就是登录之后将认证信息存放在cookie
中。当有app
请求时可以先在自己的应用中校验是否登录。如果未登录将跳转至认证系统,此时认证系统检测cookie
信息,如果有登录信息,跳回请求系统。多谢 @kevinz 的指点,我现在采用这样的方式:
每个 APP 使用 Tomcat JDBCRealm 进行认证 (Authentication),但使用 Spring Security 进行授权。两者基于相同的用户信息数据库。
在 Tomcat 中打开 SSO -- 这个很重要,否则访问同一个域中其它 webapp 时,不会带上 Cookie,也就无法认证了
在每个 webapp 中,配置 Web.xml 使用 Tomcat 进行认证 -- 如果用 Spring 进行认证,则 Tomcat 的 SSO 不起作用
在每个 webapp 中,配置 spring,使用 J2eePreAuthenticatedProcessingFilter,进行权限控制 (Authorization)
spring.xml 中的配置