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

标签 php jakarta-ee single-sign-on

我有一个在 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/

相关文章:

PHP:多维数组元素的串联

java - @PostConstruct & 检查异常

java - Wildfly/Hibernate 查询结果无法返回持久化实体

c# - 如何为 Kentor idprovider 添加自定义元数据?

java - Keycloak RC4-带 Hmac

asp.net-mvc - 如何在 IIS 中使用带有 https 的域名而不是 localhost 来调试网站

php - 运行PHP代码而无需等待Python返回值

php - 与 PHP 时间范围组 id 作斗争 - 开始时间,结束时间。请帮忙!

java - UserTransaction 和 EntityTransaction 的区别

php - 如何修改 .htaccess 文件以提供 QUERY_STRING?