我有一个在 GlassFish 3.1 上运行的现有 Java EE Web 应用程序。通过 GlassFish 3.1 中配置的 jdbcRealm 可以正常登录。
另一个团队的某人正在用 PHP 开发一个单独的 Web 应用程序,老板不希望应用程序的用户必须登录两次。也就是说,当他们登录到 Java Web 应用程序并单击将他们带到 PHP 应用程序的链接时,他们也应该已经登录到该应用程序。 (反之亦然。)
不确定如何实现它。我在想我可以生成一个长的随 secret 钥( token ),该 key 在任一应用程序登录时生成,并在每个 Web 请求中传递给任一应用程序以识别登录用户,但这似乎不安全。
我需要正确方向的指示。
最佳答案
你说
I was thinking that I could generate a long random key (a token) that gets generated on log in of either app, and passed around in every web request for either app to identify a logged in user, but that doesn't seem safe.
但这基本上就是 session 的工作方式。
最好的办法是生成一个唯一的登录标识符(如您所说),将其存储在两个应用程序都可以访问的数据库或内存缓存中,并找到一种方法来保存它,以便两个网络应用程序都可以检索它。
如果两个应用程序都在同一个根域中,您可以使用路径设置为 /
的 cookie,以便两个应用程序都可以访问它。
如果这两个应用程序将位于不同的根域,那么它会有点棘手。
至于传递标识符 token 的安全性,您可以在每次请求时重新生成标识符,以防止 cookie 劫持。
关于php - 如何在两个 Web 应用程序 PHP 和 Java EE 之间进行单点登录 (SSO)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7570101/