2.2.2. 使用授权转发模式


除了凭证转发外,Elytron 还支持在对等点之间信任地使用身份。这在以下情况下非常有用:

要使用授权转发,您首先在转发服务器上配置身份验证客户端 ,然后将接收服务器配置为接受和处理授权

在转发服务器上配置身份验证客户端

要启用授权转发,您必须在转发服务器配置中配置身份验证客户端配置。

以下管理 CLI 命令创建默认身份验证客户端配置来启用身份验证转发。如果需要,您可以配置基于高级规则的选择。

示例:管理 CLI 命令以创建身份验证客户端配置

/subsystem=elytron/authentication-configuration=forwardit:add(authentication-name=theserver1,security-domain=ApplicationDomain,realm=ApplicationRealm,forwarding-mode=authorization,credential-reference={clear-text=thereallysecretpassword})
/subsystem=elytron/authentication-context=forwardctx:add(match-rules=[{authentication-configuration=forwardit,match-no-user=true}])

这些命令将下列 身份验证配置 和身份验证 上下文 配置添加到 elytron 子系统:

示例:身份验证客户端配置

<authentication-client>
    <authentication-configuration name="forwardit" authentication-name="theserver1" security-domain="ApplicationDomain" forwarding-mode="authorization" realm="ApplicationRealm">
        <credential-reference clear-text="thereallysecretpassword"/>
    </authentication-configuration>
    <authentication-context name="forwardctx">
        <match-rule match-no-user="true" authentication-configuration="forwardit"/>
    </authentication-context>
</authentication-client>

当转发服务器联系接收服务器时,它不使用默认的基于身份验证的用户名和凭据,而是使用预定义的服务器登录名称 theserver1 来建立信任关系。

在接收服务器上配置授权转发

要成功完成转发,接收服务器配置需要配置与转发服务器传递的身份匹配的身份。在这种情况下,您必须使用正确的凭据在接收服务器上配置名为 theserver1 的用户。

您还必须在 elytron 子系统中配置"RunAs"权限映射,以允许从转发服务器传递的 server1 身份的身份切换。如需有关权限映射的更多信息,请参阅如何为 JBoss EAP 配置服务器安全性 https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.3/html-single/how_to_configure_server_security/#create_an_elytron_permission_mapper 创建 Elytron Permission Mapper

下面的命令添加了一个名为 auth -forwarding-permission-mapper 的 simple -permission-mapper,其中包含以下配置:

  • 用户 匿名 的权限映射。此用户没有权限,这会阻止匿名用户登录。
  • 用户 user server1 的权限映射。此用户被分配了 RunAsPrincipalPermission 权限 *,它授予该用户作为任何身份运行的全局权限。您可以根据偏好将权限限制为特定身份。
  • 所有其他用户的权限映射。

示例:管理CLI命令到创建简单权限映射器

/subsystem=elytron/permission-set=run-as-principal-permission:add(permissions=[{class-name="org.wildfly.security.auth.permission.RunAsPrincipalPermission",target-name="*"}])

/subsystem=elytron/simple-permission-mapper=auth-forwarding-permission-mapper:add(permission-mappings=[{principals=["anonymous"]},{principals=["theserver1"],permission-sets=[{permission-set=login-permission},{permission-set=default-permissions},{permission-set=run-as-principal-permission}]},{match-all=true,permission-sets=[{permission-set=login-permission},{permission-set=default-permissions}]}]

此命令向 elytron 子系统添加下列 简单权限映射 器配置:

示例:简单权限映射器配置

<mappers>
    <simple-permission-mapper name="auth-forwarding-permission-mapper">
        <permission-mapping>
            <principal name="anonymous"/>
            <!-- No permissions: Deny any permission to anonymous! -->
        </permission-mapping>
        <permission-mapping>
            <principal name="theserver1"/>
            <permission-set name="login-permission"/>
            <permission-set name="default-permissions"/>
            <permission-set name="run-as-principal-permission"/>
        </permission-mapping>
        <permission-mapping match-all="true">
            <permission-set name="login-permission"/>
            <permission-set name="default-permissions"/>
        </permission-mapping>
    </simple-permission-mapper>
</mappers>
<permission-sets>
    <permission-set name="login-permission">
        <permission class-name="org.wildfly.security.auth.permission.LoginPermission"/>
    </permission-set>
    <permission-set name="default-permissions">
        <permission class-name="org.wildfly.extension.batch.jberet.deployment.BatchPermission" module="org.wildfly.extension.batch.jberet" target-name="*"/>
        <permission class-name="org.wildfly.transaction.client.RemoteTransactionPermission" module="org.wildfly.transaction.client"/>
        <permission class-name="org.jboss.ejb.client.RemoteEJBPermission" module="org.jboss.ejb-client"/>
    </permission-set>
    <permission-set name="run-as-principal-permission">
        <permission class-name="org.wildfly.security.auth.permission.RunAsPrincipalPermission" target-name="*"/>
    </permission-set>
</permission-sets>

注意

login-permissiondefault-permissions 权限集已存在于默认配置中。

如果在转发授权后使用主体转换器,则这些转换器会同时应用于身份验证和授权主体。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部