JBoss/WildFly 跨项目共享安全域

JBoss/WildFly Security Domain shared across projects

这是问题所在:

我有一个自定义安全域,它在活动目录中对用户进行身份验证,但从文件(将来从数据库)中获取角色

每个项目的一切都像一个魅力,但是会话不会跨多个项目共享,即使项目共享相同的安全域,如果用户在一个项目中进行了身份验证,则必须在另一个项目中再次进行身份验证.

来自 standalone.xml

的安全域定义
            <security-domain name="custom-form-auth" cache-type="default">
                <authentication>
                    <login-module code="ro.test.login.CustomLoginModule" flag="required" module="ro.test.Process-login">
                        <module-option name="activeDirectory" value="${jboss.server.config.dir}/activeDirectory.properties"/>
                    </login-module>
                </authentication>
            </security-domain>

jboss-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
   <security-domain>custom-form-auth</security-domain>
   <disable-audit>true</disable-audit>
</jboss-web>

对于跨应用程序的共享身份验证,您必须启用单一登录 功能。单一登录配置允许对使用不同 Web 上下文的公司站点进行集中登录配置。

要在 JBoss7 中启用 SSO,您需要在 Web 子系统中添加 sso 选项(SSO 按主机配置):

   <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">  
        <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>  
        <virtual-server name="default-host" enable-welcome-root="true">  
            <alias name="localhost"/>  
            <alias name="example.com"/>  
            <sso reauthenticate="false"/>  
        </virtual-server>  
    </subsystem> 

参见:https://developer.jboss.org/wiki/JBossAS711WebSSONon-Clustered