我们有一个jsf应用程序,有一个正常的登录站点。现在我们必须将此应用程序与另一个应用程序集成,我的问题是在两个应用程序之间传递参数。假设客户端在一个应用程序中有一个 ID,我必须从第二个应用程序加载登录页面,我认为从第一个应用程序通知第二个应用程序有关客户端的最简单方法是使用参数加载登录页面,这是来自第一个应用程序的客户端 ID。
另一种方式,我的第二个应用程序必须独立运行,所以我需要两个登录页面,一个没有参数,一个有参数。甚至有可能这样做,或者还有另一种方法可以做到这一点。
第二个应用程序可以具有具有两种不同表单的单个登录页面。
您可以将第一个应用程序的一些 ID 作为会话属性的一部分传递,并在第二个应用程序的登录页面中获取该会话属性。在这里,您可以检查是否获得了会话属性(是否为 null),并在适用时呈现相关表单。相反,如果一个直接点击第二个应用程序的登录页面,则此会话属性将不存在,您可以呈现另一个表单(如果适用)。
您不能在两个不同的应用程序之间共享会话。在我看来,您将参数从第一个应用程序传递到第二个应用程序的策略似乎是正确的。
如果您想共享登录名,那么另一种方法可能是在第一个应用程序的加密cookie中添加登录详细信息,当您重定向到另一个应用程序时,第二个应用程序可以根据加密cookie验证登录。
两个应用程序应该在同一域中运行以接受cookie(例如.xyz.com)
这就是大多数 SSO(单点登录)应用程序通过使用 LTPA 令牌作为 cookie 来共享会话的方式。