6.4. 远程访问 Jakarta Enterprise Beans
向客户端添加安全以远程调用 Jakarta 企业 Bean 的一种方式是使用安全域。安全域是用户名/密码对和用户名/角色对的简单数据库。术语也用于 Web 容器的上下文,其含义略有不同。
要针对 Jakarta Enterprise Beans 验证安全域中存在的特定用户名/密码对,请按照以下步骤执行:
- 将新的安全域添加到域控制器或单机服务器。
配置
wildfly-config.xml文件,该文件位于应用程序的类路径中,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在使用新安全域的域或单机服务器上创建自定义远程连接器。
- 将 Jakarta Enterprise Beans 部署到服务器组,该组配置为将配置集与自定义远程连接器搭配使用,如果您不使用受管域,则部署到您的单机服务器。
6.4.2. 添加新安全域 复制链接链接已复制到粘贴板!
运行管理 CLI:
执行
jboss-cli.sh或jboss-cli.bat脚本并连接到服务器。创建新的安全域本身:
运行以下命令,在域控制器或单机服务器上创建一个名为
MyDomainRealm的新安全域:对于域实例,使用以下命令:
/host=master/core-service=management/security-realm=MyDomainRealm:add()
/host=master/core-service=management/security-realm=MyDomainRealm:add()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于独立实例,使用以下命令:
/core-service=management/security-realm=MyDomainRealm:add()
/core-service=management/security-realm=MyDomainRealm:add()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
myfile.properties的属性文件:对于单机实例,创建一个
EAP_HOME/standalone/configuration/myfile.properties文件,并为域实例创建EAP_HOME/domain/configuration/myfile.properties文件。这些文件需要具有文件所有者的读取和写入权限。chmod 600 myfile.properties
$ chmod 600 myfile.propertiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建对存储有关新角色信息的属性文件的引用:
运行以下命令,以创建指向
myfile.properties文件的指针,该文件将包含与新角色相关的属性:注意属性文件不会由附带的
add-user.sh和add-user.bat脚本创建。它必须在外部创建。对于域实例,使用以下命令:
/host=master/core-service=management/security-realm=MyDomainRealm/authentication=properties:add(path=myfile.properties)
/host=master/core-service=management/security-realm=MyDomainRealm/authentication=properties:add(path=myfile.properties)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于独立实例,使用以下命令:
/core-service=management/security-realm=MyDomainRealm/authentication=properties:add(path=myfile.properties)
/core-service=management/security-realm=MyDomainRealm/authentication=properties:add(path=myfile.properties)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您的新安全域已创建好。将用户和角色添加到这一新域时,信息将存储在独立于默认安全域的文件中。您可以使用自己的应用程序或程序来管理此新文件。
在使用 add-user.sh 脚本将用户添加到 application-users.properties 以外的非默认文件时,您必须向其传递参数 --user-properties myfile.properties,否则它将尝试使用 application-users.properties。
6.4.3. 将用户添加到安全域 复制链接链接已复制到粘贴板!
-
运行
add-user脚本。打开一个终端,并将目录更改到EAP_HOME/bin/目录。如果您在红帽企业 Linux 或任何其他类 UNIX 操作系统上,请运行add-user.sh。如果您在 Windows Server 上,请运行add-user.bat。 -
选择是否添加管理用户或应用程序用户。对于这个过程,键入
b来添加应用程序用户。 -
选择要添加用户的域。默认情况下,唯一可用的域是
ApplicationRealm。如果您添加了自定义域,您可以改为将用户添加到该域。 -
出现提示时,键入用户名、密码和角色。出现提示时,键入所需的用户名、密码和可选角色。通过键入
yes 或键入 no以取消更改来验证您的选择。更改写入到安全域的每个属性文件中。
6.4.4. 安全域和安全域之间的关系 复制链接链接已复制到粘贴板!
若要通过安全域保护 Jakarta Enterprise Beans,他们必须使用配置为从安全域检索用户凭据的安全域。这意味着域需要包含 Remoting 和 RealmDirect 登录模块。通过 @SecurityDomain 注释来分配安全域,该注释可应用于 Jakarta Enterprise Beans。
其他 安全域从底层安全域检索用户和密码数据。如果 Jakarta Enterprise Beans 没有 @SecurityDomain 注释,但 Jakarta Enterprise Beans 包含任何其他安全相关注释,则此安全域是默认域。
底层 http-remoting 连接器 (供客户端用于建立连接)决定了使用哪个安全域。有关 http-remoting 连接器 的更多信息,请参阅 JBoss EAP 配置指南中 的关于删除 子系统 的更多信息。
可以通过这种方式更改默认连接器的安全域:
/subsystem=remoting/http-connector=http-remoting-connector:write-attribute(name=security-realm,value=MyDomainRealm)
/subsystem=remoting/http-connector=http-remoting-connector:write-attribute(name=security-realm,value=MyDomainRealm)
6.4.5. 关于使用 SSL 加密的远程 Jakarta Enterprise Beans 访问 复制链接链接已复制到粘贴板!
默认情况下,EJB2 和 Jakarta Enterprise Beans3 Beans3 Beans3 Bean 的远程方法调用(RMI)的网络流量不会被加密。在需要加密的实例中,可以使用安全套接字层(SSL),以便加密客户端和服务器之间的连接。使用 SSL 还增加了允许网络流量遍历某些防火墙的好处,具体取决于防火墙配置。
红帽建议显式禁用 SSLv2、SSLv3 和 TLSv1.0,以便在所有受影响的软件包中明确禁用 TLSv1.1 或 TLSv1.2。