如何在两个web应用程序,PHP和Java EE之间进行单点登录(SSO)


how to do single-sign-on (SSO) between two web apps, PHP and Java EE?

我有一个现有的Java EE web应用程序运行在GlassFish 3.1上。通过在GlassFish 3.1中配置的jdbcRealm可以正常登录。

另一个团队的人正在开发一个单独的PHP web应用程序,老板不希望应用程序的用户必须登录两次。也就是说,当他们登录到Java web应用程序并单击将他们带到PHP应用程序的链接时,他们也应该已经登录到该应用程序。(反之亦然)。

不知道如何实现这个。我在想我可以生成一个长随机密钥(令牌),在任何一个应用程序的登录上生成,并在每个web请求中传递,以识别登录的用户,但这似乎不安全。

你说

我想我可以生成一个长随机密钥(令牌)在登录任一应用程序时生成,并在每个web中传递请求任一应用程序识别登录用户,但这没有似乎是安全的。

但这就是会话的本质。

你最好的办法是生成一个唯一的登录标识符(如你所说),将其存储在两个应用程序都可以访问的数据库或内存缓存中,并找到一种方法来保存它,以便两个web应用程序都可以检索它。

如果两个应用都在同一个根域,你可以使用路径设置为/的cookie,这样两个应用都可以访问它。

如果两个应用程序将在不同的根域,那么它将有点棘手。

关于传递标识符令牌的安全性,您可以在每个请求上重新生成标识符,以防止cookie劫持。