gpt4 book ai didi

java - CAS 单点登录过滤器

转载 作者:太空宇宙 更新时间:2023-11-04 14:48:41 27 4
gpt4 key购买 nike

我关注了CAS Best Practices用于构建cas.war (v4.0.0) 并将其部署到Tomcat7。当我启动 Tomcat 时,我可以访问我的 CAS 登录页面:

https://localhost:8443/cas/login

然后,我部署一个“客户端”应用程序(一个使用 Shiro 进行身份验证的 Grails Web 应用程序),该应用程序上线于:

http://localhost:9100/myapp

我转到 myapp 的经过身份验证的 URL :

http://localhost:9100/myapp/secret

我已成功重定向到我的 CAS 登录页面(目前,我使用默认的 casLoginView.jsp )。我检查浏览器 cookie,对于 CAS 站点,我有一个 JSESSIONID 。我使用 CAS 默认凭据登录(用户名是 casuser;密码是 Melon),并成功重定向到 http://localhost:9100/myapp/secret 。巨大的成功!我再次检查我的 cookie,发现我有相同的 JSESSIONID以及新的 CASTGC cookies 。

我现在直接进入我的 CAS 注销页面:

https://localhost:8443/cas/logout

我看到“注销成功”消息,并再次检查我的 cookie。 CASTGC cookie不见了,我还有一个JSESSIONID ,然而,这是一个不同的JSESSIONID比我得到的第一个。

我现在返回到我的经过身份验证的 URL:

http://localhost:9100/myapp/secret

我希望被重定向到 CAS 登录页面:相反,我可以查看 /secret页面并且即使在注销后似乎仍然经过身份验证!!!

相信我需要实现SingleSignOutFilter将其放入 myappweb.xmlinstructed here .

我需要知道什么:

  • 将配置SingleSignOutFilterweb.xml完成单点退出的实现,还是还需要进行更多配置?
  • 实现单点退出后,它会具有我上面描述的预期行为吗?意思是,如果我转到 /logout链接,那么每当我尝试访问经过身份验证的 URL 时,它都会将我重定向回 /login页面?
  • 如何判断我正在使用哪种协议(protocol)(CAS 2.0 或 SAML 1.1)?我应该使用 CAS 4.0.0 附带的任何默认值,因为我没有覆盖项目中的任何内容。
  • JSESSIONID 和有什么区别和CASTGC ?服务器如何不同地处理/使用它们?
  • 我需要在 cas-servlet.xml 中配置任何内容吗?使单点登录正常工作?如果是这样,那又怎样?如果不是,这个文件有什么用?

最佳答案

What I need to know:

  • Will configuring SingleSignOutFilter in web.xml complete my implementation for single sign out, or is there more config that I need to do?

是的,当然。但为了避免泄漏资源,您应该遵循指南并向 web.xml 添加 SingleSignOutHttpSessionListener。请参阅official Java client documentation在客户端进行完整的设置。不要忘记将 Github 页面切换到您使用的 CAS 客户端版本。 (请注意,它可能包含拼写错误。)

  • Once single sign out is implemented, will it have the expected behavior that I describe above? Meaning, if I go to the /logout link, then anytime I try to go to an authenticated URL, it should redirect me back to the /login page?

当然,这就是单点注销机制的要点 - 它会销毁相应客户端应用程序中的所有 session - 前提是它们能够处理 /logout 上 CAS 发出的注销回调。

  • How can I tell which protocol (CAS 2.0 or SAML 1.1) I'm using? I should be using whatever default CAS 4.0.0 ships with as I didn't override anything in my project.

如果您不知道如何为 CAS 或客户端应用程序配置 SAML,那么您肯定会使用 CAS 协议(protocol)。

  • What is the difference between JSESSIONID and CASTGC? How are they handled/used different by the server?

CASTGC cookie 是您的 CAS session 标识符的持有者( session ,从技术上讲是票证,由 CAS 在其自己的类似 map 的结构中进行管理)。这是只有您和 CAS 服务器知道的 secret 。 Java 应用程序使用 JSESSIONID cookie 来识别您的应用程序 session ,如 Java Servlets 所定义。规范。具体来说,CAS 主要用它来跟踪您当前的演唱过程。

  • Do I need to configure anything in cas-servlet.xml to get single sign out working? If so, what? If not, what is this file used for?

不,你不知道。但你可能会读到 e。 G。 official Apereo documentation描述了服务器端 SLO 功能的原理和可能的自定义。

关于java - CAS 单点登录过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24068989/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com