为 SAML holder-of-key 对称密钥令牌配置客户机和提供程序绑定
为 SAML holder-of-key 令牌配置客户机和提供程序策略集连接及绑定。此配置场景使用对称密钥。
开始之前
关于此任务
SAML 令牌策略由应用程序服务器中的 CustomToken 扩展进行定义。要创建 CustomToken 扩展,请使用客户机与提供程序绑定文档中的定制属性来定义 SAML 令牌配置参数。“Saml HoK 对称客户机样本”和“Saml HoK 对称提供程序样本”常规绑定包含定制属性的主要配置。客户机和提供程序样本绑定包含 SAML11 和 SAML20 令牌类型配置信息,因此这些绑定可以与 SAML11 和 SAML20 策略集配合使用。根据您计划实现 SAML 令牌的方式,必须修改已安装绑定样本中的属性值。属性及属性值的示例在该过程中予以提供。
用于修改绑定样本的过程从配置 Web Service 客户机策略集连接开始,然后配置 Web Service 提供程序策略集连接。该过程中显示的示例使用了样本 Web Service 应用程序 JaxWSServicesSamples。
过程
- 导入两个缺省策略集:SAML20 HoK Symmetic WSSecurity default 和 Username WSHTTPS default。
- 单击服务 > 策略集 > 应用程序策略集。
- 单击导入。
- 选择从缺省存储库。
- 选择两个缺省策略集。
- 单击确定以导入这些策略集。
- 为信任客户机连接策略集。单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > JaxWSServicesSamples > 服务客户机策略集和绑定。 仅当使用特定于应用程序的绑定来访问外部 STS 时,才需要关于连接和分离策略集以及配置信任客户机绑定的步骤。如果您使用常规绑定来访问外部 STS,那么可以跳过这些步骤,并转至讨论配置与 STS 的通信的步骤。
- 选中 Web service 客户机资源的复选框。
- 单击连接客户机策略集。
- 选择策略集 Username WSHTTPS default。
- 配置信任客户机绑定。
- 再次选择 Web service 客户机资源。
- 在“服务客户机策略集和绑定”面板中,单击分配绑定。
- 单击新建特定于应用程序的绑定以创建特定于应用程序的绑定。
- 为新建的特定于应用程序的绑定指定绑定配置名称。在此示例中,绑定名称为 SamlTCSample。
- 将 SSL 传输策略类型添加到绑定。 (可选)修改 NodeDefaultSSLSettings 设置。单击安全性 > SSL 证书和密钥管理 > SSL 配置 > NodeDefaultSSLSettings。
- 将 WS-Security 策略类型添加到绑定,然后修改认证设置。
- 单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > JaxWSServicesSamples > 服务客户机策略集和绑定 > SamlTCSample > 添加 > WS-Security > 认证和保护 > request:uname_token。
- 单击应用。
- 选择回调处理程序。
- 指定用户名和密码(并确认该密码)以使 Web service 客户机向外部 STS 进行认证。
- 单击确定和保存。
- 保存绑定设置后,返回到“服务客户机策略集和绑定”面板以分离策略集和绑定。
- 单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > JaxWSServicesSamples > 服务客户机策略集和绑定。
- 单击 Web service 客户机资源的复选框。
- 单击分离客户机策略集。
- 下载非受限管辖区域策略文件。 SAML20 HoK Symmetic WSSecurity default 安全策略使用 256 位加密密钥大小,这需要非受限 Java 密码术扩展 (JCE) 策略文件。有关更多信息,请参阅“调整 Web Service 安全性”主题中的“使用非受限 JCE 策略文件”一节。
- 连接“SAML20 HoK Symmetic WSSecurity default”策略集并将“Saml HoK 对称客户机样本”绑定指定给客户机资源。
- 单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > JaxWSServicesSamples > 服务客户机策略集和绑定。
- 选择 Web Service 客户机资源。
- 单击连接客户机策略集。
- 选择策略集 SAML20 HoK Symmetic WSSecurity default。
- 再次选择 Web service 客户机资源。
- 在“服务客户机策略集和绑定”面板中,单击分配绑定。
- 选择 Saml HoK 对称客户机样本常规绑定。
- 单击保存。
- 配置 STS 端点 URL 以及用户名和密码来向 STS 认证。
- 单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > JaxWSServicesSamples > 服务客户机策略集和绑定 > Saml HoK 对称客户机样本 > WS-Security > 认证和保护。
- 单击“保护令牌”表中的 gen_saml20token。
- 单击回调处理程序。
- 修改 stsURI 属性并指定 STS 端点。 如果您不使用外部 STS 并且要让应用程序服务器使用对称密钥自己签署 holder-of-key 声明,请不要完成此步骤并转至步骤 8i。
- 如有必要,请修改 wstrustClientPolicy 属性并将该值更改为 Username WSHTTPS default。
- 修改 wstrustClientBinding 属性并更改值以与先前步骤中创建的特定于应用程序的绑定相匹配。对于此示例,该值为 SamlTCSample。 此步骤将连接 WS-Trust 客户机策略集。如果不想让服务器从使用 WS-Trust 客户机的 STS 自动请求 SAML 令牌,那么您可以跳过此步骤。
- 更改 wstrustClientBindingScope 属性的值,该属性控制应用程序服务器如何搜索绑定。将该属性值设置为 application 或 domain。当该值设置为 domain 时,应用程序服务器将在包含常规绑定文档的文件系统位置搜索 wstrustClientBinding。当该值设置为 application 时,应用程序服务器将在包含特定于应用程序的绑定文档的文件系统位置搜索 wstrustClientBinding。当未指定 wstrustClientBindingScope 属性时,应用程序服务器的缺省行为是先搜索特定于应用程序的绑定,然后搜索常规绑定。如果找不到 wstrustClientBinding,那么应用程序服务器将使用缺省绑定。
- 验证 confirmationMethod 属性的值是否是 Holder-of-key。
- 验证 keyType 属性的值是否是值 http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey 或 symmetrickey 别名。 wstrustClientWSTNamespace 属性决定如何解释 symmetrickey 别名。 在本示例中,假设将其设置为 WS-Trust 1.3 名称空间。 如果它的值为 WS-Trust 1.2,那么会将 symmetrickey 别名解释为 http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey。
- 可选: 可以修改缺省信任客户机 SOAP 版本,该版本与应用程序客户机相同。将定制属性 wstrustClientSoapVersion 的值设置为 1.1 可更改为 SOAP V1.1,或将该属性的值设置为 1.2 可更改为 SOAP V1.2。
- 可选: 如果您不使用外部 STS 并且要让应用程序服务器使用对称密钥自己签署 holder-of-key 声明,请将定制属性 recipientAlias 设置为目标服务的密钥别名的值。 指定此属性可保护目标服务的对称密钥。此别名必须是包含在 SAML 签发者的已配置信任库中的有效密钥别名。TrustStorePath 属性指定信任库文件的位置。TrustStorePath 属性定义在应用程序服务器的 SAMLIssuerConfig.properties 文件中。例如,在 WebSphere 应用程序服务器上,SAMLIssuerConfig.properties 文件在服务器级别的位置为:
在 WebSphere 应用程序服务器上,此文件在单元级别的位置为:app_server_root/profiles/$PROFILE/config/cells/$CELLNAME/nodes/$NODENAME/servers/$SERVERNAME/SAMLIssuerConfig.properties
app_server_root/profiles/$PROFILE/config/cells/$CELLNAME/sts/SAMLIssuerConfig.properties
- 单击应用,然后单击保存。
- 可选: 如果需要对 wstrustClientBinding 配置进行进一步修改,并且 wstrustClientBinding 属性指向特定于应用程序的绑定,那么必须将该特定于应用程序的绑定连接到 Web Service 客户机,然后才能完成这些修改。连接是暂时的。如先前步骤中所详细叙述,当修改完成后,您可以将已修改的特定于应用程序的绑定与 Web Service 客户机分离。
- 从外部 STS 导入 SSL 证书。
- 单击安全性 > SSL 证书和密钥管理 > 管理端点安全性配置 > server_or_node_endpoint > 密钥库和证书 > NodeDefaultTrustStore > 签署者证书。
- 单击从端口检索。
- 指定外部 STS 服务器的主机名和端口号,并为证书分配别名。 使用 SSL STS 端口。
- 单击检索签署者信息。
- 单击应用和保存以将检索到的证书复制到 NodeDefaultTrustStore 对象。
- 重新启动 Web service 客户机应用程序,以使策略集连接修改可以生效。
- 将 SAML20 HoK Symmetic WSSecurity default 策略集连接至 Web Service 提供程序。
- 下载非受限管辖区域策略文件。 SAML20 HoK Symmetic WSSecurity default 安全策略使用 256 位加密密钥大小,这需要非受限 Java 密码术扩展 (JCE) 策略文件。有关更多信息,请参阅“调整Web Service 安全性应用程序”主题中的“使用非受限 JCE 策略文件”一节。
- 指定 Saml HoK 对称提供程序样本常规绑定。
- 单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > JaxWSServicesSamples > 服务提供程序策略集和绑定 > Saml HoK 对称提供程序样本 > WS-Security > 认证和保护。
- 单击“认证令牌”表中的 con_saml20token。
- 单击回调处理程序链接。
- 使用此面板来配置嵌入式对称密钥解密配置以及针对外部 STS 的 SAML 令牌签发者数字签名验证,如以下步骤中所述。
- 配置绑定数据以对嵌入式密钥进行解密,或者从接收方配置受公用密钥保护的 SAML 声明。STS 必须有权访问接收方的公用密钥。
有两个选项用于配置密钥以进行解密:
- 选项 1:配置密钥库和专用密钥,如下所示:
- 验证密钥库名称字段是否具有值 custom。
- 单击定制密钥库配置以查看和编辑密钥库配置。
- 验证密钥文件的初始值是否是 app_server_root/etc/ws-security/samples/enc-service.jceks。
- 选项 2:设置回调处理程序中的定制属性,如下所示:
定制属性 值 keyStorePath 密钥库位置 keyStoreType 匹配的密钥库类型 受支持的密钥库类型包括:jks、jceks 和 pkcs12
keyStorePassword 密钥库的密码 keyAlias 用于 SAML 加密的公用密钥的别名 keyName 用于 SAML 加密的公用密钥的名称 keyPassword 密钥名称的密码
- 选项 1:配置密钥库和专用密钥,如下所示:
- 将外部 STS 签名证书添加到信任库。
如果 SAML 声明由 STS 签署并且未指定 signatureRequired 定制属性或该定制属性具有值 true,那么此步骤是必需步骤。将对服务提供程序配置此信任库。
- 设置定制属性 trustStoreType 以与密钥库类型相匹配。受支持的密钥库类型包括:jks、jceks 和 pkcs12。
- 将定制属性 trustStorePath 设置为密钥库文件位置。例如,app_server_root/etc/ws-security/samples/dsig-issuer.jceks。 安装 WebSphere Application Server 时不提供 dsig_issuer.jceks 文件,所以您必须创建该文件。
- 将定制属性 trustStorePassword 设置为库密码的已编码值。 该密码将以定制属性的形式进行存储,并由管理控制台进行编码。
- 可选: 您可以将定制属性 trustedAlias 设置为诸如 samlissuer 的值。如果 SAML 令牌由其他签署者签署(例如,如果 STS 将令牌请求委派给不同的令牌提供程序并且每一个提供程序都使用一个证书进行签署),请不要设置 trustedAlias 属性。如果未指定此定制属性,那么 Web Service 运行时环境将使用 SAML 声明中的签名证书来验证签名,然后对所配置的信任库验证该证书。
- 可选: 可以将定制属性 trustAnySigner 设置为值 True 以不允许进行签署者证书验证。为了进行 SAML 签名验证,将忽略“信任任何证书”配置设置。
- 可选: 可以将定制属性 signatureRequired 设置为 False,这将取消数字签名验证。但是,对于良好的安全性实践而言,应该需要签署 SAML 声明并且始终需要签发者数字签名验证。
- 可选: 您可以配置接收方以验证 SAML 声明中签发者的签发者名称和/或证书 SubjectDN。 创建可信签发者名称列表或可信证书 SubjectDN 列表,也可以同时创建这两种类型的列表。如果同时创建签发者名称列表和 SubjectDN 列表,那么将同时验证签发者名称和 SubjectDN。如果所接收的 SAML 签发者名称或签署者 SubjectDN 不在可信列表中,那么 SAML 验证将失败并发出异常。 此示例说明如何创建可信签发者与可信 SubjectDN 列表。
对于每一个可信签发者名称,请使用 trustedIssuer_n,其中 n 是正整数。对于每一个可信 SubjectDN,请使用 trustedSubjectDN_n,其中 n 是正整数。如果同时创建这两种类型的列表,那么在相同 SAML 声明中的这两个列表中,整数 n 必须相匹配。整数 n 从 1 开始并按 1 递增。
在本示例中,您信任签发者名称为 WebSphere/samlissuer 的 SAML 声明(但忽略签署者的 SubjectDN),以便您添加以下定制属性:<properties value="WebSphere/samlissuer" name="trustedIssuer_1"/>
此外,您信任由 IBM/samlissuer 发布的 SAML 声明(当签署者的 SubjectDN 为 ou=websphere,o=ibm,c=us 时),以便您添加以下定制属性:<properties value="IBM/samlissuer" name="trustedIssuer_2"/> <properties value="ou=websphere,o=ibm,c=us" name="trustedSubjectDN_2"/>
缺省情况下,如果不定义 trustedIssuer_n 值,WebSphere Application Server 将信任所有 SAML 签发者。 如果不知道此缺省行为,那么您可能误接受由授权 STS 发布的 SAML 声明
- 可选: 您可以添加一列非根认证中心 (CA) 证书,这些证书可用于检查 SAML 令牌的签名。 要添加非根证书,请添加名为 X509PATH_n 的定制属性作为非根证书的值,其中 n 是非负整数。
- 可选: 您可以添加一列证书撤销列表 (CRL),这些列表可用于验证 SAML 令牌的签名。 要添加 CRL,请添加名为 CRLPATH_n 的定制属性作为 CRL 的值,其中 n 是非负整数。
- 单击应用,然后单击保存。
- 可选: 您可以配置调用者绑定以选择要代表请求者身份的 SAML 令牌。 Web Service 安全性运行时环境使用指定的 JAAS 登录配置从将 SAML 令牌 NameId 或 NameIdentifier 用作用户名的用户注册表中,获取用户安全性名称和组成员数据。
- 单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > JaxWSServicesSamples > 服务提供程序策略集和绑定 > Saml HoK 对称提供程序样本 > WS-Security > 调用者。
- 单击新建以创建调用者配置。
- 指定名称,例如 caller。
- 输入调用者标识局部部件的值。 例如,http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0,这是已连接的 WS-Security 策略中 CustomToken 元素的局部部件。
- 单击应用,然后单击保存。
- 重新启动 Web Service 提供者应用程序以使策略集连接修改生效。
结果
子主题
SAML 签发者配置属性
创建一个新的自签发 SAML 令牌时,您可以指定配置属性,以控制如何配置令牌。这些配置属性是名称/值对,描述了提供程序端的信息(例如签发者位置)以及密钥库和信任库文件的路径。SAML 签发者配置属性
创建一个新的自签发 SAML 令牌时,您可以指定配置属性,以控制如何配置令牌。这些配置属性是名称/值对,描述了提供程序端的信息(例如签发者位置)以及密钥库和信任库文件的路径。


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_configsamlhoktoken
文件名:twbs_configsamlhoktoken.html