我在2个独立的EAR中有2个WAR应用程序,我想在Wildfly 10 / JBoss 7 EAP的单个实例中部署。如何在两场战争之间共享会话/身份验证?
例如:
EAR1:
- WAR1
- EJB
- libs
EAR2:
- WAR2
- libs
要清楚,我希望用户通过WAR1登录和验证,并在访问WAR2时使该会话对象可用,这样他就不需要重新登录系统。
我怎样才能做到这一点?我找不到与实现此目的所需配置相关的文档。
答案 0 :(得分:0)
可以在同一个EAR的两个Web应用程序之间共享会话,请查看document以获取更多详细信息。对于两个Web应用程序的单一身份验证,您必须实现SSO。您可以使用SAML或Kerberos实施SSO。希望它有所帮助.. !!
答案 1 :(得分:0)
如果您只需要在wildlfy中为应用程序进行单点登录和会话共享,则不需要任何专用的SSO机制 - 服务器已经拥有您需要的一切。首先,您需要通过WEB-INF/jboss-web.xml
使用某些现有的安全域来保护您的应用程序。示例:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<security-domain>my-sec-domain</security-domain>
</jboss-web>
接下来,您需要在Undertow(Jboss / Wildfly Web服务器)中启用SSO处理。您可以使用CLI或手动更新相应的配置。 Cli命令(用于独立模式):
/subsystem=undertow/server=default-server/host=default-host/setting=single-sign-on:add(path=/)
或者如果您手动编辑配置,请将<single-sign-on path="/" />
添加到underow配置中,如下所示:
<subsystem xmlns="urn:jboss:domain:undertow:3.1">
<buffer-cache name="default"/>
<server name="default-server">
<ajp-listener name="ajp" socket-binding="ajp"/>
<http-listener name="default" max-post-size="20485760" socket-binding="http" redirect-socket="https"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
<single-sign-on/>
</host>
</server>
现在我们需要启用会话复制/共享机制。在wildfly中,使用infinispan子系统和Web缓存完成。您将需要使用full-ha
configuraiton配置文件(standalone-full-ha.xml
)或手动将该子系统添加到您的配置中。这里敬畏正在寻找名为web
的缓存容器。如果它在那里,你应该好好去。
现在,当您在浏览器中访问APP-A时,您应该获得两个会话cookie JSESSIONID和JSESSIONIDSSO。切换到APP-B后,您应该自动登录
快乐黑客