如何在 Web 门户和 java 富客户端之间启用单点登录?

How to enable single sign-on between web portal and java rich client?

我看到了一些相关的问题,但我的情况略有不同。

我们有这个 Web 门户,可以让用户访问许多应用程序,其中有一个托管在 Web 门户上的富客户端(桌面)。事情是这样的。

  1. 用户登录到 Web 门户(我相信是 WebSphere 门户)。
  2. 使用 JNLP 启动 Web 服务器上托管的 java 富客户端。
  3. 富客户端然后要求用户(再次)登录。
  4. 用户提供与登录门户网站相同的userid/password。
  5. 富客户端根据用于验证 Web 门户登录的相同来源验证 userid/password。

这就是当前系统的设置方式。我想摆脱第二次登录。但是,富客户端需要知道用户标识,并且需要确保用户在启动应用程序时实际登录到 Web 门户。

Web 门户和富客户端是完全不同的应用程序。但是,据我了解,JNLP 文件可以包含可以传递给 java 应用程序的参数。基于此,我想知道以下是否是一个选项。

  1. JNLP 实际上来自 JSP 文件。因此门户网站可以将用户 ID 传递给 JSP 文件,该文件可以生成以用户 ID 作为参数的 JNLP。
  2. JNLP 将启动胖客户端,将用户 ID 作为参数传递。
  3. 胖客户端应用程序可以查询(Web 服务调用或类似的东西)门户以查看用户是否已登录。如果用户登录到 Web 门户,则胖客户端允许用户访问。

我想看看我有什么选择,或者我是否可以使用任何其他选择 technology/solution。

如果托管服务器是 WebSphere Portal,那么您还有一个额外的好处,即登录过程会自动为客户端创建一个 LTPA 令牌 cookie。然后您的页面可以将此令牌作为参数传递给 JNLP 富客户端。

富客户端然后可以使用 header 中设置的 LTPA cookie 查询您的门户服务器上经过身份验证的资源,并测试响应代码以检查身份验证是否成功。

LTPA 令牌是一种 enteprise-grade 安全 SSO 解决方案,它是 WebSphere 产品的标准配置,并且也适用于 WebSphere 服务器集群或场。

请注意,LTPA 令牌的到期时间可能与 session 不同。这可以在 WebSphere Application Server 管理控制台中设置。