使用 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 应用的主要内容,如果未能解决你的问题,请参考以下文章
springside4.1的shiro+cas会陷入认证死循环,跳到cas服务器登陆后无法打开页面.Firefox提示请求循环重定