2.3. 通过 Federation 子系统配置 INP 和 SP


除了手动配置 IDP 和 SP 外,使用 SAML v2 的单点登录也可以使用 JBoss EAP 子系统进行配置。这种配置方法称为 域模型,允许所有配置集中放在 JBoss EAP 实例上,而不是个别应用。这也允许使用 JBoss EAP 管理界面(如管理控制台和管理控制台)创建和更新单点登录配置。

federations

在使用 JBoss EAP 子系统配置和部署 Ins 和 SP 时,它们按照联合分组 联盟可以理解 为信任链。信任链包含共享通用配置的应用,包括证书和 SAML 特定的配置。它还包含相互信任的域,这些域可准确记录用于标识用户的进程、使用的身份验证系统的类型,以及与生成的身份验证凭据关联的任何策略。每个联合都有一个 IDP 和多个 SP。联合还定义了 SP 和 IDP 之间的信任关系,免除了每个 SP 单独跟踪和维护该信息的需求。

2.3.1. 配置子系统

在可以使用子系统设置联合之前,需要在 JBoss EAP 中启用和配置子系统。启用和配置子系统需要以下步骤:

注意

建议您在执行这些步骤之前关闭 JBoss EAP 实例。

  1. 更新扩展。

    在 JBoss EAP 配置文件、用于单机实例的 standalone.xml域的 domain.xml 中,添加 org.wildfly.extension.picketlink 扩展:

    <extensions>
      ...
      <extension module="org.wildfly.extension.picketlink"/>
      ...
    </extensions>
  2. 添加子系统。

    在 JBoss EAP 配置文件(用于 独立实例或 域的 domain.xml )的 standalone.xml 中,添加 picketlink-federation 子系统:

    <profile>
      ...
      <subsystem xmlns="urn:jboss:domain:picketlink-federation:2.0"/>
       ...
    </profile>
    注意

    也可以在 EAP_HOME/docs/examples/configs/standalone-picketlink.xml 中找到配置示例。

2.3.2. 设置联盟

设置和配置子系统后,您可以使用管理接口来配置联合。在使用子系统设置联合之前,您必须准备 IDP 和 SP 应用程序。

2.3.2.1. 准备 SP 和 IDP 应用程序

如上一节所述,当使用 SAML v2 配置单点登录时,需要创建或更新以下文件:

  • web.xml
  • jboss-web.xml
  • picketlink.xml
  • jboss-deployment-structure.xml

在使用 SAML v2 为单点登录使用 SAML v2 设置子系统时,大部分配置都是从管理接口中进行,而无需更新任何这些文件。唯一必要的配置是,在 I.xml 和 SP web.xml 文件中配置 <security-constraint> 和 关联的 <security-role >。此外,web .xml 中的 <login-config> 以及登录和错误页面也必须出现在 IDP 中。

如果已在 一节中所述配置了 IDP 或 SP,则需要删除以下文件:

  • jboss-web.xml
  • picketlink.xml
  • jboss-deployment-structure.xml

准备好应用后,必须将它们部署到 JBoss EAP 实例。

2.3.2.2. 使用管理 CLI 创建联盟

以下命令显示如何使用以下信息添加名为 new-federation 的示例联合:

要使用管理 CLI 配置联合,您必须:

  1. 添加新联合。

    /subsystem=picketlink-federation/federation=new-federation:add
  2. 向联合中添加身份提供程序。

    /subsystem=picketlink-federation/federation=new-federation/identity-provider=IDP.war:add(url="http://localhost:8080/identity/",security-domain=idp)
  3. 向联合中添加服务提供商。

    /subsystem=picketlink-federation/federation=new-federation/service-provider=SP.war:add(url="http://localhost:8080/sales-post/",security-domain=sp)
  4. 向联合中添加信任域。

    /subsystem=picketlink-federation/federation=new-federation/identity-provider=IDP.war/trust-domain="localhost:8080":add

2.3.2.3. 联合子系统属性参考

picketlink-federation 子系统具有以下结构:

联合

  • saml
  • key-store

    • Keys

      • key
  • identity-provider

    • trust

      • trust-domain
    • role-generator
    • attribute-manager
    • 处理程序

      • handler

        • handler-parameter
  • service-providers

    • service-provider

      • 处理程序

        • handler

          • handler-parameter

联合子系统示例

<subsystem xmlns="urn:jboss:domain:picketlink-federation:2.0">
  <federation name="federation-redirect-with-signatures">
    <key-store file="/jbid_test_keystore.jks" password="store123" sign-key-alias="servercert" sign-key-password="test123">
      <keys>
        <key name="servercert" host="${jboss.bind.address:localhost},127.0.0.1"/>
      </keys>
    </key-store>
    <identity-provider name="idp-redirect-sig.war" url="http://${jboss.bind.address:127.0.0.1}:8080/idp-redirect-sig/" security-domain="idp" support-signatures="true" strict-post-binding="false">
      <trust>
        <trust-domain name="${jboss.bind.address:127.0.0.1}"/>
      </trust>
      ​<handlers>
​        <handler class-name="com.mycompany.CustomHandler">
​          <handler-parameter name="param1" value="paramValue1"/>
​          <handler-parameter name="param2" value="paramValue2"/>
​          <handler-parameter name="param3" value="paramValue3"/>
​        </handler>
​      </handlers>
    </identity-provider>
    <service-providers>
      <service-provider name="sp-redirect-sig1.war" security-domain="sp" url="http://${jboss.bind.address:127.0.0.1}:8080/sp-redirect-sig1/" post-binding="false" support-signatures="true">
      ​  <handlers>
​          <handler class-name="com.mycompany.CustomHandler">
​            <handler-parameter name="param1" value="paramValue1"/>
​            <handler-parameter name="param2" value="paramValue2"/>
​            <handler-parameter name="param3" value="paramValue3"/>
​          </handler>
​        </handlers>
      </service-provider>
      <service-provider name="sp-redirect-sig2.war" security-domain="sp" url="http://${jboss.bind.address:127.0.0.1}:8080/sp-redirect-sig2/" post-binding="false" support-signatures="true"/>
    </service-providers>
  </federation>
</subsystem>

Expand
表 2.1. 联合
属性默认描述

name

 

联合名称。

saml

定义 SAML 类型。此类型定义如何处理和创建 SAML 断言的所有配置。

Expand
属性默认描述

clock-skew

0

定义 SAML 断言的时钟偏移。该值必须以毫秒为单位指定。

token-timeout

5000

定义 SAML 断言的超时时间。该值必须以毫秒为单位指定。

key-store

定义 KeyStore 类型。这种类型定义密钥存储的配置方式。

Expand
属性默认描述

password

 

定义密钥存储的密码。

sign-key-alias

 

定义签名文档时使用的别名。

sign-key-password

 

定义 sign-key-alias 的密码。

file

 

定义文件位置。

relative-to

 

个系统提供的命名路径,如 jboss.home.diruser.home、user.dir,相对于其为 file 属性中指定的路径计算绝对路径。

Keys

密钥配置.

key

定义密钥.

Expand
属性默认描述

name

 

定义给定密钥存储中密钥的名称或别名。

主机

 

代表给定密钥验证的主机名的单个或以逗号分隔的字符串列表。

identity-provider

定义身份提供程序类型。

Expand
属性默认描述

name

 

身份提供程序的唯一名称。名称必须是部署单元名称。例如,idp.war

url

 

此身份提供程序的 URL.

support-signatures

false

指明是否支持签名。

encrypt

false

指明是否支持加密。

security-domain

 

用于验证和授权用户的安全域的名称。如果 IDP 不是外部,则需要此属性。如需了解更多详细信息,请参阅 external 属性。

strict-post-binding

true

指明 IDP 应始终使用 HTTP POST 绑定做出响应。

external

false

指明配置是否引用外部 IDP。

support-metadata

false

启用/禁用 SAML 元数据支持.

ssl-authentication

false

指明身份提供程序还应支持 HTTP CLIENT_CERT 身份验证。

trust

组受信任的域类型.

trust-domain

定义受信任的域类型。

Expand
属性默认描述

name

 

定义域名。

cert-alias

 

定义此域的证书别名。

role-generator

角色生成器 实施,用于加载角色并将其推送到 SAML 断言。

Expand
属性默认描述

name

 

定义角色生成器名称。

class-name

 

RoleGenerator 类型的完全限定名称。

Code

 

定义映射到内置类型的别名。

module

 

定义加载 class-name 时要使用的模块。

attribute-manager

AttributeManager 实施,用于加载角色并将其推送到 SAML 断言。

Expand
属性默认描述

name

 

定义属性管理器名称。

class-name

 

AttributeManager 类型的完全限定名称。

Code

 

定义映射到内置类型的别名。

module

 

定义加载 class-name 时要使用的模块。

处理程序

组处理程序类型.

handler

定义处理程序类型。

Expand
属性默认描述

name

 

定义处理程序名称。

class-name

 

定义处理程序类名称。

Code

 

定义映射到内置类型的别名。

handler-parameter

定义处理程序参数类型.

Expand
属性默认描述

name

 

定义参数名称。

value

 

定义参数值。

service-providers

对服务提供商类型进行分组.

service-provider

定义服务提供商类型。

Expand
属性默认描述

name

 

此实例的名称。此名称必须是部署单元名称。

url

 

此服务提供商的 URL.

post-binding

true

指明要使用的 SAML 绑定。如果为 true,将使用 HTTP POST 绑定。否则将使用 HTTP REDIRECT 绑定。

strict-post-binding

true

指明要使用的 SAML 绑定。如果为 true,将使用 HTTP POST 绑定。否则将使用 HTTP REDIRECT 绑定。

support-signatures

false

指明是否支持签名。

support-metadata

false

启用/禁用 SAML 元数据支持.

security-domain

 

用于验证用户身份的安全域名.

error-page

/error.jsp

定义自定义错误页面位置。

logout-page

/logout.jsp

定义自定义注销页面位置。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部