WildFly中security-realm和security-domain之间的区别

时间:2015-06-24 20:13:38

标签: jboss wildfly wildfly-8

WildFly中security-domain和security-realm之间的主要区别是什么?

standalone.xml

               <security-domain name="foo">             
                    <authentication>
                        <login-module code="..." flag="...">                           
                        </login-module>                                         
                    </authentication>
                </security-domain>

        <security-realm name="foo">
            <authentication>
                <local default-user="..." allowed-users="..." 
skip-group-loading="..."/>
                <properties path="..." relative-to="..."/>
            </authentication>
            <authorization>
                <properties path="..." relative-to="..."/>
            </authorization>
        </security-realm>

1 个答案:

答案 0 :(得分:24)

回答更新(2018-06-08)以反映WildFly Elytron命名。 WildFly Elytron是WildFly 11(和JBoss EAP 7.1)中引入的新安全子系统。安全子系统 - 遗留系统和Elytron - 都有安全领域和安全领域的概念,但意义不同。

传统安全

安全域主要用于定义已部署应用程序的安全性。 安全域中的标准身份验证基于JAAS javax.security.auth.spi.LoginModule实现。应用程序可以提供自定义登录模块。

安全域主要用于服务器管理接口和远程处理的配置安全性。 领域身份验证基于javax.security.auth.callback.CallbackHandler的提供实现。 AFAIK不可能提供自己的CallbackHandler实现。

安全域可以使用“RealmDirect”登录模块将身份验证委派给安全领域。

安全领域可以使用“jaas”身份验证配置将身份验证委派给安全域

请参阅JBoss安全开发人员Darran Lofthouse的this response

Elytron安全

安全领域封装对用户存储库的访问(DB - jdbc-realm,LDAP - ldap-realm,属性文件 - properties-realm,...)。与传统安全性相比,它与JAAS登录模块处于类似的水平。提供了一个API,因此可以实现自定义领域。

安全域表示使用安全域进行身份验证的安全策略。安全域可用于管理安全性以及应用程序安全性。对安全域的成功身份验证会生成SecurityIdentity,表示当前用户。

阅读JBoss EAP文档中的Elytron subsystem章节,以获得更详细的Elytron组件概述。

要了解有关在Elytron安全域中控制身份验证流程的更多信息,请阅读Darran Lofthouse的this article

在Legacy和Elytron安全之间的中间

如果您要从Legacy迁移到Elytron安全,则可以将旧版安全域公开为 Elytron Security Realm 。在Elytron子系统Migration guide

中阅读有关此场景的更多信息