15.2. 配置 Jakarta 授权安全性
				您可以通过正确配置安全域来配置 Jakarta 授权,然后修改 jboss-web.xml 以包含所需的参数。
			
将 Jakarta 身份验证添加到安全域
					要将 Jakarta 授权支持添加到安全域,请将 Jakarta Authorization 授权策略添加到安全域的授权堆栈,并设置了 所需 标志。以下是具有 Jakarta 授权支持的安全域示例:不过,建议您从管理控制台或管理 CLI 配置安全域,而不是直接修改 XML。
				
示例:使用 Jakarta 身份验证的安全域
配置 Web 应用程序以使用 Jakarta 身份验证
					jboss-web.xml 文件位于部署的 WEB-INF/ 目录中,包含 Web 容器的覆盖和其他特定于 JBoss 的配置。要使用 Jakarta Authorization-enabled 安全域,您需要包含 <security-domain> 元素,同时将 <use-jboss-authorization> 元素设置为 true。以下 XML 配置为使用上面的 Jakarta Authorization 安全域:
				
示例:使用 Jakarta 身份验证安全域
<jboss-web>
    <security-domain>jacc</security-domain>
    <use-jboss-authorization>true</use-jboss-authorization>
</jboss-web>
<jboss-web>
    <security-domain>jacc</security-domain>
    <use-jboss-authorization>true</use-jboss-authorization>
</jboss-web>配置 Jakarta Enterprise Beans 应用程序以使用 Jakarta 身份验证
					将 Jakarta Enterprise Beans 配置为使用安全域,并使用 Jakarta 授权与 Web 应用不同。对于 Jakarta Enterprise Beans,您可以在 ejb-jar.xml 描述符中声明方法权限或方法组。在 <ejb-jar> 元素中,任何子 <method-permission> 元素都包含有关 Jakarta 授权角色的信息。详情请查看以下示例配置。EJBMethodPermission 类是 Jakarta EE API 的一部分,并记录在 EJBMethodPermission 类中。
				
示例:Jkarta Enterprise Beans 中的 Jakarta 身份验证方法权限
				您还可以使用安全域限制 Jakarta Enterprise Beans 的身份验证和授权机制,就如对 Web 应用执行的操作一样。安全域在 <security> 子元素的 jboss-ejb3.xml 描述符中声明。除了安全域外,您还可以指定 <run-as-principal>,它更改了 Jakarta Enterprise Beans 运行的主体。
			
示例:Jkarta Enterprise Beans 中的安全域文化
使用 elytron 子系统启用 Jakarta 授权
在传统安全子系统中禁用 Jakarta 身份验证
					默认情况下,应用服务器使用传统 安全 子系统来配置 Jakarta 授权策略提供商和工厂。默认配置映射到 PicketBox 中的实施。
				
				要使用 Elytron 管理 Jakarta 授权配置,或您要安装到应用服务器的任何其他策略,您必须首先在旧 安全 子系统中禁用 Jakarta 授权。为此,您可以使用以下管理 CLI 命令:
			
/subsystem=security:write-attribute(name=initialize-jacc, value=false)
/subsystem=security:write-attribute(name=initialize-jacc, value=false)
				如果不这样做,可能会导致服务器日志中出现以下错误: MSC000004: Failure 在服务 org.wildfly.security.policy: java.lang.StackOverflowError.
			
定义 Jakarta 身份验证策略提供程序
					elytron 子系统根据 Jakarta 授权规范提供内置策略提供程序。要创建策略供应商,您可以执行以下管理 CLI 命令:
				
/subsystem=elytron/policy=jacc:add(jacc-policy={})
reload
/subsystem=elytron/policy=jacc:add(jacc-policy={})
reload为 Web 部署启用 Jakarta 身份验证
定义了 Jakarta Authorization 策略供应商后,您可以执行以下命令为 web 部署启用 Jakarta Authorization:
/subsystem=undertow/application-security-domain=other:add(security-domain=ApplicationDomain,enable-jacc=true)
/subsystem=undertow/application-security-domain=other:add(security-domain=ApplicationDomain,enable-jacc=true)
				以上命令为应用定义了一个默认安全域(如果 jboss-web.xml 文件中未提供)。如果您已经定义了 application-security-domain,只需要启用 Jakarta 授权,您可以执行以下命令:
			
/subsystem=undertow/application-security-domain=my-security-domain:write-attribute(name=enable-jacc,value=true)
/subsystem=undertow/application-security-domain=my-security-domain:write-attribute(name=enable-jacc,value=true)为 Jakarta Enterprise Beans 部署启用 Jakarta 身份验证
定义了 Jakarta Authorization 策略供应商后,您可以通过执行以下命令为 Jakarta Enterprise Beans 部署启用 Jakarta Authorization:
/subsystem=ejb3/application-security-domain=other:add(security-domain=ApplicationDomain,enable-jacc=true)
/subsystem=ejb3/application-security-domain=other:add(security-domain=ApplicationDomain,enable-jacc=true)
				以上命令为 Jakarta Enterprise Beans 定义了一个默认安全域。如果您已经定义了 application-security-domain,而只希望启用 Jakarta 授权,您可以按如下方式执行命令:
			
/subsystem=ejb3/application-security-domain=my-security-domain:write-attribute(name=enable-jacc,value=true)
/subsystem=ejb3/application-security-domain=my-security-domain:write-attribute(name=enable-jacc,value=true)创建自定义 Elytron 策略提供程序
					当您需要自定义 java.security.Policy 时,会使用自定义策略提供程序,例如在您要与一些外部授权服务集成以检查权限时。若要创建自定义策略提供程序,您需要实施 java.security.Policy,创建并插入具有该实施的自定义模块,并在 elytron 子系统中使用模块的实施。
				
/subsystem=elytron/policy=policy-provider-a:add(custom-policy={class-name=MyPolicyProviderA, module=x.y.z})
/subsystem=elytron/policy=policy-provider-a:add(custom-policy={class-name=MyPolicyProviderA, module=x.y.z})如需更多信息,请参阅 策略提供程序属性。
在大多数情况下,您可以使用 Jakarta 授权策略提供程序,因为它应当属于任何符合 Jakarta EE 规范的应用服务器。