如何检查我是否使用java服务登录到外部应用程序


How to check if am I logged in to external app using java services?

我在两台服务器上有两个独立的web应用程序。一个是PHP应用程序,另一个是java应用程序。从PHP应用程序,我需要询问java应用程序是否"我登录到java应用程序了吗"。我试着使用curl,但它总是返回"false"——这是有道理的,它对会话一无所知。

所以我尝试使用javascript/jQuery发送请求,它总是显示消息"无法连接到主机"。我发现XMLHttpRequest()不适用于跨平台。

当我使用浏览器询问服务"我是否登录到java应用程序"时,我收到了正确的回复。但问题是,当我试图从php应用程序中做同样的事情时。

不确定'XMLHttpRequest()不能跨平台工作是什么意思。'这只是来自浏览器的HTTP客户端请求,对于PHP或Java web应用程序来说,这没有什么区别。

你必须更多地了解"我登录到java应用程序了吗"实际上是如何工作的。Java应用程序通常会使用HTTP标头发送cookie,并且浏览器(出于明显的安全原因)不会将会话信息从一个web应用程序混合到另一个。

根据您的描述,您试图实现的目标被称为单点登录(即,您登录到一个应用程序,其他应用程序将能够使用同一会话)。这需要更多的工作。你必须看看类似SAML的东西。

不久前,我在这里的另一个答案上找到了这个演示文稿,并将其添加到书签中,你可能想看看它。它有点旧,但仍然有用,然后看看什么是PHP和Java最新、最棒的工具。

http://www.slideshare.net/craigsdickson/fast-and-free-sso-a-survey-of-open-source-solutions-to-single-sign-on

这是一个在PHP中的SAML API:http://simplesamlphp.org/

这是旧Sun OpenSSO的替代品API:http://forgerock.com/products/open-identity-stack/openam/