传播 SAML 令牌

您可以使用各种 SAML 令牌传播方法在出站 Web Service 消息中包括 SAML 令牌。

关于此任务

Web Service 客户机可以在出站 Web Service 消息中包括两种类型的令牌:
  • 客户机从入站 Web Service 消息接收的原始 SAML 令牌。
  • 新的自签发 SAML 令牌。
可以使用原始 SAML 令牌中的属性或 RunAs 主体集内 WSPrincipal 用户名中的属性来生成新的 SAML 令牌。Web Service 策略配置会确定将要传播的 SAML 令牌。您可通过以编程方式插入要传播至 Axis2 RequestContext 对象的 SAML 令牌来覆盖策略配置。

已启用 4 种传播方法。此表汇总了这些传播方法和关联的绑定选项:

表 1. 传播方法和关联的绑定选项. 使用传播以在 Web Service 消息中包括 SAML 令牌。
SAML 令牌传播方法 绑定选项 实现详细信息
传播原始 SAML 令牌。 tokenRequest 绑定选项设置为值 propagation 将原始 SAML 令牌从接收该令牌的服务器发送至使用 WS-Security 的其他服务器。
传播用户安全性名称、唯一安全性名称、组标识和安全域名。 tokenRequest 绑定选项设置为值 issueByWSCredential 覆盖缺省系统实现。

自签发 SAML 令牌包含由用户安全上下文中的 WSCredential 对象指定的用户安全性名称、用户唯一安全性名称、组标识和安全域名。

传播 SAML 令牌标识和属性。 未设置绑定选项。 缺省系统实现。

服务器将自生成一个包含原始 SAML 属性、认证方法以及 NameIdentifier 或 SAML NameID 的新 SAML 令牌,并将自生成的新 SAML 令牌发送至使用 WS-Security 的下游服务器。 新 SAML 令牌的签发者名称、签发者签署证书和生存期由 SAML 提供程序配置属性确定。

传播 WSPrincipal。 tokenRequest 绑定选项设置为值 issueByWSPrincipal
对于转换用户 对于转换用户: 从 V8 开始,指定 issueByWSPrincipalissueByWSCredential 值效果相同。如果还未使用 issueByWSPrincipal 值,那么建议使用 issueByWSCredential 值。 如果已使用 issueByWSPrincipal 值,那么建议最终使用 issueByWSCredential 值替换该值。trns
覆盖缺省系统实现。

自签发 SAML 令牌包含 RunAs 主体集中的 WSPrincipal 信息。该信息以 NameIdentity 或 NameID 形式进行存储而不从原始 SAML 令牌复制任何内容,即使该令牌存在于主体集中也是如此。

以编程方式传播已存在的 SAML 令牌。 使用 com.ibm.wsspi.wssecurity.core.token.config.WSSConstants.SAMLTOKEN_IN_MESSAGECONTEXT 属性来插入您要传播到 RequestContext 中的 SAML 令牌。 覆盖所有其他现有绑定选项。

过程

  1. 通过将 bindings.xml 文件中的 tokenRequest 绑定选项设置为值 propagation 来传播原始 SAML 令牌,如步骤中所示。 此方法会将原始 SAML 令牌发送至使用 WS-Security 的其他服务器。要使传播成功,RunAs 主体集中必须存在有效的 SAML 令牌。服务器将从当前安全上下文中的 RunAs 主体集内抽取 SAML 令牌,并验证以下条件。如果这些条件中的任何一个无效,那么 WS-Security 运行时环境将不传播 SAML 令牌,因此传播请求将失败。
    • SAML 令牌未到期,并且到期时间位于 notOnOrAfter 值的时间段内。
    • SAML 令牌中的 ConfirmationMethod 设置与令牌生成器配置中定义的 confirmationMethod 绑定选项相同。
    • SAML 令牌中的令牌 ValueType 与令牌生成器配置中的 ValueType 相匹配。

    请执行这些步骤以对 tokenRequest 绑定选项设置正确的值。此过程假设已部署名为 JaxWSServicesSamples 的 Web Service 客户机应用程序,并且已连接“Saml Bearer 客户机样本”绑定。

    1. 单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > JaxWSServicesSamples > 服务客户机策略集和绑定 > Saml Bearer 客户机样本 > WS-Security > 认证和保护
    2. 单击“认证令牌”表中的 gen_saml11token
    3. 单击回调处理程序
    4. 添加定制属性 tokenRequest 并将属性值设置为 propagation
  2. 要使用自签发 SAML 令牌来传播 SAML 令牌标识和属性,请修改 bindings.xml 文件中的出站 tokenGenerator。 此方法会将原始 SAML 属性、NameIdentifier 或 NameID 以及认证方法从原始 SAML 令牌发送至使用 WS-Security 的其他服务器。如果主体集中没有 SAML 令牌,那么服务器将使用以 NameIdentifier 或 NameID 形式存储的 WSPrincipal 来创建自签发 SAML 令牌。 此传播方法是缺省系统实现。在此方法中,未设置绑定选项。
    使用此传播方法时,以下限制适用于 bindings.xml 文件:
    • 请不要设置 bindings.xml 文件中的 tokenRequest 绑定选项。
    • 请不要设置 bindings.xml 文件中的 stsURI 绑定选项,也不要将该选项设置为此值:www.websphere.ibm.com/SAML/Issuer/Self
  3. 要传播 WSPrincipal,请按照步骤中所示来修改 bindings.xml 文件。 将 bindings.xml 文件中的 tokenRequest 绑定选项设置为值 issueByPrincipal。使用此方法时,自签发 SAML 令牌始终以 WSPrincipal 为基础,即使主体集中有 SAML 令牌也是如此。新 SAML 令牌以 NameId 或 NameIdentifier 形式包含 WSPrincipal 用户名。该令牌不含 WSPrincipal 或 WSCredential 对象中的任何其他属性。
    使用此传播方法时,以下限制适用于 bindings.xml 文件:
    • 请不要设置 bindings.xml 文件中的 stsURI 绑定选项,也不要将该选项设置为值 www.websphere.ibm.com/SAML/Issuer/Self

    请执行这些步骤以对 tokenRequest 绑定选项设置正确的值。此过程假设已部署名为 JaxWSServicesSamples 的 Web Service 客户机应用程序,并且已连接“Saml Bearer 客户机样本”绑定。

    1. 单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > JaxWSServicesSamples > 服务客户机策略集和绑定 > Saml Bearer 客户机样本 > WS-Security > 认证和保护
    2. 单击“认证令牌”表中的 gen_saml11token
    3. 单击回调处理程序
    4. 添加定制属性 tokenRequest 并将属性值设置为 issueByPrincipal
  4. 要通过在 RequestContext 中插入 SAML 令牌来传播已存在的 SAML 令牌,请遵循以下步骤。 使用此方法将您创建的 SAML 令牌发送到使用 WS-Security 的下游服务器。如果 WS-Security 运行时在 RequestContext 中检测到 SAML 令牌,将自动触发传播操作。已存在的令牌将覆盖任何其他现有绑定选项。要使用此传播方法,请通过将 com.ibm.wsspi.wssecurity.core.token.config.WSSConstants.SAMLTOKEN_IN_MESSAGECONTEXT 指定为密钥来将现有 SAML 令牌保存在 RequestContext 中,如步骤中所示。
    1. 使用 SAMLToken samlToken = <token type> 方法生成 SAML 令牌,例如:
      SAMLToken samlToken = samlFactory.newSAMLToken(cred, reqData, samlIssuerCfg);
    2. 将 SAML 令牌保存到 RequestContext,例如:
      Map requestContext = ((BindingProvider)port).getRequestContext();
         requestContext.put("com.ibm.wsspi.wssecurity.core.token.config.WSSConstants.SAMLTOKEN_IN_MESSAGECONTEXT", samlToken );
    此传播选项可与其他传播方法共存并覆盖其他方法。如果 RequestContext 中的 SAML 令牌已到期或者令牌到期时间少于当前时间与高速缓存缓冲时间之和,那么 WS-Security 运行时环境将忽略该 SAML 令牌并使用 bindings.xml 文件中配置的其他 3 种传播方法中的一种。要避免使用其他 3 种传播方法,请将以下绑定选项添加到令牌生成器配置中回调处理程序下的定制属性:failOverToTokenRequest = false
  5. 要传播包含在 com.ibm.websphere.security.cred.WSCredential 对象中的用户组成员资格、唯一安全性名称和域名,请按照步骤中所示来修改 bindings.xml 文件。bindings.xml 文件中的 tokenRequest 绑定选项设置为值 issueByWSCredential。使用此方法时,自签发 SAML 令牌始终以 WSCredential 为基础,即使主体集中有 SAML 令牌也是如此。

    新的 SAML 1.1 令牌包含以下声明:

    • NameIdentifier 元素包含 WSCredential 中的 SecurityName 值,并将 NameQualifier 元素设置为 WSCredential 中的域名。SecurityName 通过调用 WSCredential.getSecurityName() 方法来获取。 域名通过调用 WSCredential.getRealmName() 方法来获取。
    • 所有属性都已将 AttributeNamespace 设置为 com.ibm.websphere.security.cred.WSCredential 作为值。
    • GroupIds 属性包含用户所属的所有组名。组名通过调用 WSCredential.getGroupIds() 方法来获取。
    • UniqueSecurityName 属性包含唯一安全性名称,该名称通过调用 WSCredential.getUniqueSecurityName() 方法来获取。
    • (可选)可以通过在回调处理程序中添加 includeRealmName=true 定制属性来声明 WSCredential 中的域名。

    新的 SAML 2.0 令牌包含以下声明:

    • NameID 元素包含 WSCredential 中的 SecurityName 值,并将 NameQualifier 元素设置为 WSCredential 中的域名。SecurityName 通过调用 WSCredential.getSecurityName() 方法来获取。 域名通过调用 WSCredential.getRealmName() 方法来获取。
    • 所有属性都已将 NameFormat 设置为 com.ibm.websphere.security.cred.WSCredential 作为值。
    • GroupIds 属性包含用户所属的所有组名。组名通过调用 WSCredential.getGroupIds() 方法来获取。
    • UniqueSecurityName 属性包含唯一安全性名称,该名称通过调用 WSCredential.getUniqueSecurityName() 方法来获取。
    • (可选)可以通过在回调处理程序中添加 includeRealmName=true 定制属性来声明 WSCredential 中的域名。
    使用此传播方法时,以下限制适用于 bindings.xml 文件:
    • 请不要设置 bindings.xml 文件中的 stsURI 绑定选项。
    请执行这些步骤以对 tokenRequest 绑定选项设置正确的值。此过程假设已部署名为 JaxWSServicesSamples 的 Web Service 客户机应用程序,并且已连接“Saml Bearer 客户机样本”绑定。
    1. 单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > JaxWSServicesSamples > 服务客户机策略集和绑定 > Saml Bearer 客户机样本 > WS-Security > 认证和保护
    2. 单击“认证令牌”表中的 gen_saml11token
    3. 单击回调处理程序
    4. 添加 tokenRequest 定制属性并将属性值设置为 issueByWSCredential
    以下示例阐明了基于 WSCredential 的自签发 SAML 1.1 声明中的 NameIdentifierAttribute 语句。
    <saml:AttributeStatement>
        <saml:Subject>
            <saml:NameIdentifier NameQualifier="ldap.acme.com:9080">uid=alice,dc=acme,dc=com</saml:NameIdentifier>
            <saml:SubjectConfirmation>
                <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</saml:ConfirmationMethod>
            </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:Attribute AttributeName="UniqueSecurityName" AttributeNamespace="com.ibm.websphere.security.cred.WSCredential">
            <saml:AttributeValue>uid=alice,dc=acme,dc=com</saml:AttributeValue>
        </saml:Attribute>
        <saml:Attribute AttributeName="GroupIds" AttributeNamespace="com.ibm.websphere.security.cred.WSCredential">
            <saml:AttributeValue>cn=development,dc=acme,dc=com</saml:AttributeValue>
            <saml:AttributeValue>cn=deployment,dc=acme,dc=com</saml:AttributeValue>
            <saml:AttributeValue>cn=test,dc=acme,dc=com</saml:AttributeValue>
        </saml:Attribute>
    </saml:AttributeStatement>
    以下示例阐明了基于 WSCredential 的自签发 SAML 2.0 声明中的 NameIDAttribute 语句。
    <saml2:AttributeStatement>
        <saml2:Attribute Name="UniqueSecurityName"
               NameFormat="com.ibm.websphere.security.cred.WSCredential">
            <saml2:AttributeValue>uid=alice,dc=acme,dc=com</saml2:AttributeValue>
        <saml2:Attribute>
        <saml2:Attribute AttributeName="GroupIds"
               NameFormat="com.ibm.websphere.security.cred.WSCredential">
            <saml2:AttributeValue>cn=development,dc=acme,dc=com</saml2:AttributeValue>
            <saml2:AttributeValue>cn=deployment,dc=acme,dc=com</saml2:AttributeValue>
            <saml2:AttributeValue>cn=test,dc=acme,dc=com</saml2:AttributeValue>
        </saml2:Attribute>
    </saml2:AttributeStatement>
    <saml2:NameID NameQualifier="ldap.acme.com:9060">alice</saml2:NameID>

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_propagatesamltoken
文件名:twbs_propagatesamltoken.html