1

我需要在 WebLogic 10.3.6 服务器中部署的 2 个或更多应用程序之间配置 SAML。我在 2 个不同的域之间成功配置了 SAML,但我需要在同一域中的 2 个应用程序之间使用 SAML,不同的托管服务器。如果我在同一域、同一托管服务器中部署应用程序,即使未配置 SAML,凭据也会自动共享。App1 在 iframe 中调用 App2。当我访问 App1 时,登录页面有效。当我在 iframe 中访问 App2 时,凭据已从 App1 完美传输到 App2,但是当我返回 App1 时,会话结束。在不同的域上部署应用程序都可以正常工作,我可以正常访问 App1 和 App2。

当我在同一个域和不同的托管服务器中访问 App2 时,我不明白为什么 App1 的会话被终止。

4

1 回答 1

2

我不知道它是否仍然相关:weblogic SAML2 实现将 JSESSIONID-Cookie 存储在根 cookie 路径“/”下。当同一域中的托管服务器位于同一主机上时,每次您将请求从一台服务器更改为另一台时,身份验证 cookie 都会被覆盖。所以你要重新认证...(cookie只存储在域名下!应用路径和端口无关)

解决方案是在不同的 ip-address、dns-name 或仅在不同的 dns-alias 下启动每个托管服务器:例如,对于别名:

managedserverA.example.net points to 192.168.1.5
managedserverB.example.net points to 192.168.1.5 either

现在您的浏览器可以将身份验证 cookie 存储在不同的域下:

JSESSIONID CLmYRsmZJ41TgyLJkcDQNf1!1664721840 /managedserverA.example.net
JSESSIONID q6nHRsnPNscWksZw99LBJh2!606405387  /managedserverB.example.net

不要忘记更改 SAML2 配置中的发布站点 URL,以包含每个托管服务器的 dns 别名:

published site url: http://managedserverA.example.net:7020/saml2
published site url: http://managedserverB.example.net:7030/saml2

干杯,

托米斯拉夫·德杜斯

于 2013-04-16T05:57:52.193 回答