EAR之间的Wildfly共享会话?

时间:2017-06-15 19:11:51

标签: session jboss wildfly

我在2个独立的EAR中有2个WAR应用程序,我想在Wildfly 10 / JBoss 7 EAP的单个实例中部署。如何在两场战争之间共享会话/身份验证?

例如:

EAR1:
- WAR1
- EJB
- libs


EAR2:
- WAR2
- libs

要清楚,我希望用户通过WAR1登录和验证,并在访问WAR2时使该会话对象可用,这样他就不需要重新登录系统。

我怎样才能做到这一点?我找不到与实现此目的所需配置相关的文档。

2 个答案:

答案 0 :(得分:0)

可以在同一个EAR的两个Web应用程序之间共享会话,请查看document以获取更多详细信息。对于两个Web应用程序的单一身份验证,您必须实现SSO。您可以使用SAMLKerberos实施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后,您应该自动登录 快乐黑客