我们正在尝试将 CAS 服务器用于我们现有的基于 Web 的应用程序的 SSO。我们的目标是
- 跨各种应用程序(包括跨域)实现 SSO。
- 当它们被重定向到 CAS 服务器登录页面时,为不同的应用程序定制登录(在 UI 术语中)页面。
- 无需进入 CAS 登录页面即可登录,原因是页面本身嵌入了“一个小的登录部分”,用户不会被重定向到 CAS 登录页面以获得更好的可用性。
我们完成了第一个和第二个目标。但是第三个有问题。
对于这个功能,我们试图复制与第二个目标相同的操作,唯一的区别是从非 CAS 登录页面提交/发布数据(凭证、登录票等)。
- 我们不能使用 iframe 在小部分中显示 CAS 登录页面,这容易受到浏览器兼容性问题的影响。
- 我们不能使用 ajax 来使用 CAS api 获取登录票并进行 HTTP 发布(跨域问题)
- 我们所做的是:通过在服务器端进行 HTTP 发布,在加载非 CAS 登录页面时检索登录票和执行 ID。当我们发布用户名/密码以及 loginticket 和 execId 时,CAS 服务器不接受发布数据,而是将用户重定向到 CAS 登录页面,但返回浏览器并再次提交数据可以正常工作。原因是 CAS 和浏览器之间没有建立会话,因此 CAS 拒绝任何发布数据。我们可以使用 CAS restAPI,但它只会让用户登录,对完成 SSO 没有帮助。
关于我们如何处理这个问题的任何想法?
谢谢,普拉蒂克