Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Session 野蝇在耳朵之间分享会话?_Session_Jboss_Wildfly - Fatal编程技术网

Session 野蝇在耳朵之间分享会话?

Session 野蝇在耳朵之间分享会话?,session,jboss,wildfly,Session,Jboss,Wildfly,我有两个独立的EAR中的两个WAR应用程序,我想在Wildfly 10/JBoss 7 EAP的单个实例中部署它们。我如何在两场战争之间共享会话/身份验证 例: 明确地说,我希望用户通过WAR1登录和验证,并在访问WAR2时使会话对象可用,这样他就不需要重新登录到系统中 我怎样才能做到这一点?我找不到与实现此目的所需的配置相关的文档。可以在属于同一EAR的两个web应用程序之间共享会话,有关此方面的更多详细信息,请浏览。对于两个web应用程序的单一身份验证,必须实现SSO。您可以使用或实现SSO

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

例:

明确地说,我希望用户通过WAR1登录和验证,并在访问WAR2时使会话对象可用,这样他就不需要重新登录到系统中


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

可以在属于同一EAR的两个web应用程序之间共享会话,有关此方面的更多详细信息,请浏览。对于两个web应用程序的单一身份验证,必须实现SSO。您可以使用或实现SSO。希望对你有帮助

如果您只需要在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>
或者,如果手动编辑配置,请将
添加到牵引配置中,如下所示:

<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
configurationon profile(
standalone full ha.xml
)或手动将该子系统添加到配置中。这里awe正在查找名为
web
的缓存容器。如果在那里,你就可以走了。
现在,当您在浏览器中访问APP-A时,您应该会得到两个会话cookie JSESSIONID和JSESSIONIDSSO。切换到APP-B后,您应该会自动登录。

Happy Hacking

尽管HttpSession对象似乎常常与身份验证密切相关,但它们之间通常没有特定的关系。您真的想在战争之间共享实际的HttpSession吗?如果你这样做,你会问一大堆类加载问题。@SteveC实际上,我的要求不是共享HttpSession,而是在不创建/实现SSO解决方案的情况下共享身份验证信息。在没有SSO解决方案的情况下,我能想到/想象的唯一方法是共享会话对象以传输该信息。有没有其他我没有考虑过的可能性?你可以把加密的令牌塞进cookie中。您甚至可以序列化和加密“身份验证信息”,并将其放入cookie中。但实际上,集成类似的东西是相当容易的。@SteveC搞笑——这与我最初做的概念证明差不多,但被要求看看如果没有额外的步骤,我是否能找到一种方法。这就是问题所在。从我可以很快地看出,Keyclope看起来就像一个SSO解决方案/IdP解决方案,不是吗?Key斗篷和另一个SSO解决方案(例如:WSO2、Auth0、Ping等)之间有什么区别?没错。但它远没有周围的一些“大铁”解决方案复杂。安全是重要的,决不能轻视。应用程序安全性差的公司才是进入新闻的公司……SteveC在上面提出了一个正确的观点;如果我在同一个EAR中的两个Web应用程序之间共享会话对象,我是否需要确保会话对象中包含的所有模型/库都与两次WAR相同?我正在尝试获取更多信息/详细信息。上面的文档非常薄。如果我使用jaas表单身份验证来保护APP-A,您知道我是否/如何在APP-B中使用spring安全性,或者他们都需要使用jaas吗?SSO并不是一件小事,很多人都理解这个术语下的不同主题。甚至redhat也有不同的产品来解决这个问题——jboss sso、Keyclope。。。如果您有权访问redhat客户门户,您可以找到更多信息。如果上述下拖设置不起作用,请尝试在Saml v2上查找更多信息或尝试使用KeyClope。
/subsystem=undertow/server=default-server/host=default-host/setting=single-sign-on:add(path=/)
<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>