猿问

如何使用 JASIG SSO 一次验证两个客户端

老实说,不确定标题是否具有足够的描述性,所以这里是文字:

背景故事

我正在使用 Spring 框架重建一个 Web 应用程序。但是,旧应用程序在 PHP 上运行。

有一个宽限期,两个应用程序将同时运行,所以我将慢慢地将东西移到 Java 端并远离 PHP。

对我来说幸运的是,后端和前端之间的大部分通信都是通过 jQuery 和 AJAX 完成的。我已经设置了许多休息端点来处理阅读,我的列表中的下一个是保存。

问题

现在问题来了,我的 Spring 应用程序需要知道是否真的允许登录的用户保存数据。一位同事建议我使用 Jasig CAS SSO 作为身份验证,以便 php 和 java 应用程序都使用相同的登录名。

然而,这里也存在一个问题。我已经设置了 Spring Security 来使用 SSO,而且 PHP 知道如何处理它。但是,当我向 Spring 端发出 AJAX 请求时,问题就出现了。Spring security 检测到我没有登录(可能是因为没有发送 cookie),因此返回 302 以便我转到 CAS 登录页面。

我设法让所有东西都在同一个(不是向外的)域上运行:

  • cas.domain.local

  • app.domain.local (PHP)

  • tools.domain.local (Java)

请求来自 app.domain.local 到 tools.domain.local

我已经阅读了很多关于票据授予 cookie、票据授予票据、在我的 ajax 请求中发送会话信息以及称为身份验证代理的内容。

问题

通过 ajax 请求告诉 java 端我已经通过了 cas SSO 服务器的身份验证的最佳方法是什么?

请询问是否需要更多信息。

慕姐4208626
浏览 144回答 3
3回答

LEATH

在这种情况下,我认为您不会对 CAS 感到满意。我最好的猜测是使用JWT来处理您的身份验证。JWT 可以以安全的方式封装您的身份验证信息,您可以通过 Http-Header 将它们发送到两个应用程序或通过您在超级domain.local域上设置的 cookie以便两个域都能获取它。您仍然可以为您的应用程序使用两个单独的“本地”会话。

慕虎7371278

您需要将一些设置添加到 spring-security. 单击此处查看文档。
随时随地看视频慕课网APP

相关分类

Java
我要回答