使用 Apache Shiro 和 CAS 在 SSO 上重定向循环,用于 Web 应用

Posted

技术标签:

【中文标题】使用 Apache Shiro 和 CAS 在 SSO 上重定向循环,用于 Web 应用【英文标题】:Redirect loop on SSO with Apache Shiro and CAS for a Webapp 【发布时间】:2014-11-27 15:16:19 【问题描述】:

我正在开发一个典型的 Web 应用程序,但通过 Shiro 并使用 JASIG CAS SSO 执行身份验证和授权。我的应用程序是一个在 tomcat 7 上运行的 JSF 2 webapp。我启用了 Shiro,并且在我的 Shiro 配置中,我已经迷上了 CAS 领域。一切正常......也就是说,网络应用程序运行良好,shiro 正在重定向到 CAS 登录页面。反过来,CAS 将我重定向回最初请求的 URL。 然后什么都没有发生!!!我得到一个重定向循环!

https://myhost:8443/gdsicache/secured/index?ticket=ST-37-L2N7SCVtHxHWENqBfpOY-cas01.example.org

从链接中可以看出:我被重定向到请求的安全资源https://myhost/gdsicache/secured/index,我也得到了一张票,但最终陷入了循环。

有谁知道为什么流程最终会进入重定向循环?我不再进行重定向,因为除了 Web.xml 文件中的 shiro 过滤器之外,我没有任何其他过滤器。

【问题讨论】:

【参考方案1】:

此重定向循环通常由 JVM 无法识别的服务器证书引起,主要是由客户端机器 JVM。如果您的应用程序与服务器(尤其是 JVM)分离,则应确保您拥有 CA 颁发的导入根证书、中间证书(有时是交叉证书)。否则,您的 CAS 客户端将执行循环,因为它无法识别您服务器上的证书。

请注意,导致问题的不是浏览器证书,而是 JVM。

PS。您可能还需要将根证书、中间证书(和某些交叉证书)导入 CAS 服务器 JVM。

【讨论】:

以上是关于使用 Apache Shiro 和 CAS 在 SSO 上重定向循环,用于 Web 应用的主要内容,如果未能解决你的问题,请参考以下文章

Apache Shiro 和 SSO

shiro cas 重定向循环 怎么解决的 哥们?

SpringMvc 下集成shiro与cas

转Apache shiro集群实现 shiro入门介绍

springside4.1的shiro+cas会陷入认证死循环,跳到cas服务器登陆后无法打开页面.Firefox提示请求循环重定

Shiro 和 CAS 如何使用不同的域进行身份验证和授权?