使用 WSS API 连接生成器令牌以保护消息真实性

指定令牌生成器时,生成器端使用该信息来生成安全性令牌。

开始之前

Web Service 安全性运行时中的令牌处理和可插入令牌体系结构复用 Web Service 安全性 API (WSS API) 中的同一安全性令牌接口和 Java™ 认证和授权服务 (JAAS) 登录模块。 可以在 Web Service 安全性运行时的 WSS API 和 WSS SPI 中使用令牌创建和验证的同一实现。

限制: com.ibm.wsspi.wssecurity.token.TokenGeneratorComponent 接口不与 JAX-WS Web Service 一起使用。如果要使用 JAX-RPC Web Service,那么此接口仍然有效。

注意,由于在当前的 OASIS Web Services Security 草稿规范中未定义任何 KeyName 策略声明,所以在应用程序服务器中不支持键名称 (KeyName) 元素。

关于此任务

JAAS 回调处理程序 (CallbackHandler) 和 JAAS 登录模块 (LoginModule) 负责在生成器端创建安全性令牌,并在使用者端验证(认证)安全性令牌。

例如,在生成器端,用户名令牌由 JAAS LoginModule 创建并使用 JAAS CallbackHandler 来传递认证数据。JAAS LoginModule 创建 Username SecurityToken 对象并将其传递到 Web Service 安全性运行时。

然后,在使用者端,Username Token XML 格式将传递到 JAAS LoginModule 以进行验证或认证,并且 JAAS CallbackHandler 用于将认证数据从 Web Service 安全性运行时传递到 LoginModule。对令牌进行认证后,将创建 Username SecurityToken 对象,该对象会将令牌传递到 Web Service 安全性运行时。

注: WebSphere® Application Server 不支持将可堆栈的登录模块与 WebSphere Application Server 缺省登录模块实现配合使用,这意味着在 WebSphere Application Server 登录模块实现之前或之后添加登录模块。如果要对登录模块实现进行堆栈,那么由于没有缺省实现,因此必须开发必需的登录模块。
WebSphere Application Server 提供的 com.ibm.websphere.wssecurity.wssapi.token 包支持以下类:
  • 安全性令牌 (SecurityTokenImpl)
  • 二进制安全性令牌 (BinarySecurityTokenImpl)
另外,WebSphere Application Server 为安全性令牌提供以下预配置的子接口:
  • 派生密钥令牌
  • 安全上下文令牌 (SCT)
  • 用户名令牌
  • LTPA 令牌传播
  • LTPA 令牌
  • X509PKCS7 令牌
  • X509PKIPath 令牌
  • X509v3 令牌
  • Kerberos v5 令牌

缺省情况下,使用用户名令牌、X.509 令牌和 LTPA 令牌来保护消息真实性。缺省情况下,使用派生密钥令牌和 X.509 令牌进行签署和加密。

仅客户机支持 WSS API 和 WSS SPI。要在生成器端指定安全性令牌类型,您也可以使用管理控制台来配置策略集。还可以使用 WSS API 或策略集来匹配使用者安全性令牌。

缺省登录模块和回调实现设计为用作一对,表示生成器和使用者部件。要使用缺省实现,请选择适当的生成器/使用者安全性令牌对。例如,如果需要 X.509 令牌,那么在令牌生成器中选择 system.wss.generate.x509 并在令牌使用者中选择 system.wss.consume.x509

要配置生成器端安全性令牌,请使用 WSS API 中经过预先配置的适当令牌生成器接口来完成下列令牌配置过程步骤:

过程

  1. 生成 wssFactory 实例。
  2. 生成 wssGenerationContext 实例。

    WSSGenerationContext 接口存储用于生成 Web Service 安全性 (WS-Security) 的组件,例如签署和加密信息、安全性令牌和时间戳记。调用 generate() 方法时,将生成所有这些组件。

  3. 创建生成器端组件,例如 WSSSignature 和 WSSEncryption 对象。
  4. 通过指定 JAAS 登录配置的名称来指定 JAAS 配置。 Java 认证和授权服务 (JAAS) 配置指定 JAAS 配置的名称。JAAS 配置指定令牌如何登录到使用者端上。不要移除预定义的系统或应用程序登录配置。但是,在这些配置中,您可以添加模块类名并指定 WebSphere Application Server 装入每个模块的顺序。
  5. 指定令牌生成器类名。 令牌生成器类名指定必需信息来生成 SecurityToken。缺省情况下,使用用户名令牌、X.509 令牌和 LTPA 令牌来保护消息真实性。
  6. 通过指定回调处理程序类名并指定回调处理程序密钥来指定回调处理程序的设置。 此类名是用于安全性令牌框架插件的回调处理程序实现类的名称。

    回调处理程序实现获取必需的安全性令牌并将它传递到令牌生成器。令牌生成器将安全性令牌插入在 SOAP 消息的 Web Service 安全性头中。令牌生成器也是可插入安全性令牌框架的插入点。服务提供程序可以提供它们自己的实现,但该实现必须使用 WSSGenerationContext 接口。

    WebSphere Application Server 为生成器端提供以下缺省回调处理程序实现:
    com.ibm.websphere.wssecurity.callbackhandler.PropertyCallback
    这个类是一个回调,用于处理 Web Service 安全性 (WS-Security) 配置 XMI 文件中各个元素中的“名称/值”对。
    com.ibm.websphere.wssecurity.callbackhandler.UNTGUIPromptCallbackHandler
    这个类是生成器端上用户名令牌的回调处理程序(具有 GUI 提示)。此实例用于设置 WSSGenerationContext 对象以生成用户名令牌。
    com.ibm.websphere.wssecurity.callbackhandler.UNTGenerateCallbackHandler
    这个类是生成器端上用户名令牌的回调处理程序。此实例用于设置到 WSSGenerationContext 对象以连接用户名令牌。仅将此实现用于 Java Platform, Enterprise Edition (Java EE) 应用程序客户机。
    com.ibm.websphere.wssecurity.callbackhandler.X509GenerateCallbackHandler
    这个类是用于生成 X.509 证书的回调处理程序,此证书插入到 SOAP 消息中的 Web Service 安全性头中,作为生成器端的二进制安全性令牌。此实例用于生成 WSSSignature 和 WSSEncryption 对象,并将对象设置到 WSSGenerationContext 对象以生成 X.509 二进制安全性令牌。此回调处理程序需要密钥库和密钥定义。如果使用此实现,那么生成器端上必须提供了密钥库密码、路径和类型。
    com.ibm.websphere.wssecurity.callbackhandler.LTPAGenerateCallbackHandler
    这个类是生成器端上轻量级第三方认证 (LTPA) 令牌的回调处理程序。此实例用于生成 WSSSignature 对象和 WSSEncryption 对象以生成 LTPA 令牌。

    此回调处理程序用于验证在 SOAP 消息的 Web Service 安全性头中插入的 LTPA 安全性令牌(作为二进制安全性令牌)。但是,如果指定了用户名和密码,WebSphere Application Server 对用户名和密码进行认证以获取 LTPA 安全性令牌,而不是从运行方式主体集获取该令牌。仅当 Web Service 作为应用程序服务器上的客户机时,才使用此回调处理程序。建议不要在 Java EE 应用程序客户机上使用此回调处理程序。如果使用此实现,那么必须在生成器端提供了基本认证用户标识和密码。

    com.ibm.websphere.wssecurity.callbackhandler.KRBTokenConsumeCallbackHandler
    这个类是生成器端上 Kerberos v5 令牌的回调处理程序。此实例用于设置 WSSGenerationContext 对象,以生成 Kerberos v5 AP-REQ 作为二进制安全性令牌。 此实例也用于生成 WSSSignature 和 WSSEncryption 对象,以在 SOAP 消息签名和加密中使用 Kerberos 会话密钥或派生的密钥。
  7. 如果指定了 X.509 令牌,那么还需指定其他令牌信息。
    表 1. X.509 令牌的信息. 使用 X.509 令牌进行签名和加密。
    令牌信息 描述
    storeRef 密钥库的引用名称。
    storePath 根据需要从其中装入密钥库的密钥库文件路径。建议您在路径名中使用 ${USER_INSTALL_ROOT} 变量,因为此路径将扩展到机器上 WebSphere Application Server 路径。使用 X.509 令牌回调处理程序实现时需要此路径。
    storePassword 用于检查密钥库的完整性的密码,或者是用于解锁密钥库以及访问密钥库文件的密钥库密码。密钥库及其配置用于 WebSphere Application Server 提供的一些缺省回调处理程序实现。
    storeType 用于密钥定位器的密钥库的密钥库类型。此选择指示密钥库文件所使用的格式。可选择以下值:
    JKS
    如果密钥库使用 Java 密钥库 (JKS) 格式,请使用此选项。
    JCEKS
    如果在软件开发包 (SDK)中配置了 Java 密码术扩展,请使用此选项。在 WebSphere Application Server 中配置了缺省的 IBM® JCE。此选项通过使用三重 DES 加密为存储的专用密钥提供更强的保护。
    JCERACFKS
    如果证书存储在 SAF 密钥环中,请使用 JCERACFKS(仅限于 z/OS®)。
    PKCS11KS (PKCS11)
    如果密钥库使用 PKCS#11 文件格式,请使用此格式。使用此格式的密钥库可以包含加密硬件上的 RSA 密钥,或者包含使用加密硬件的加密密钥来确保安全。
    PKCS12KS (PKCS12)
    如果密钥库使用 PKCS#12 文件格式,请使用此选项。
    alias 密钥别名。该密钥别名由密钥定位器用于查找密钥库文件中的密钥。
    keyPassword 用于恢复密钥的密钥密码。需要此密码访问密钥库文件内的密钥对象。
    keyName 密钥的名称。对于数字签名,请求生成者或响应使用者签名信息使用密钥名称来确定哪个密钥用于以数字方式对消息进行签名。对于加密,密钥名用于确定用于加密的密钥。密钥名称必须是标准的专有名称 (DN)。例如,CN=Bob,O=IBM,C=US
    certStores 证书库的列表。证书集合库包含不可信的中介证书的列表和证书撤销列表 (CRL)。此步骤为生成器绑定配置证书集合库和证书撤销列表。
    identityAssertion 指定是否使用身份断言。如果定义了身份断言,请选择此项。此选项表明仅需要初始发送方的标识,并且此标识将插入 SOAP 消息中的 Web Service 安全性头中。对于 X.509 令牌生成者,应用程序服务器仅发送原始签署者证书。
    requestorCertificate 指定是否使用了请求者的证书。

    可以为 X.509 令牌指定以下各项:

    1. 不带任何密钥库。
    2. 带信任锚。 信任锚指定包含可信根证书的密钥库配置列表。这些配置用于验证 X.509 格式的入局安全性令牌的证书路径。例如,选择信任锚或可信证书的证书库时,必须在设置证书路径前配置信任锚和证书库。
    3. 带用于密钥定位器的密钥库。

      首先,必须创建了密钥库文件,例如,通过使用 keytool 实用程序来创建。此密钥库用于检索 X.509 证书。此条目指定用于访问密钥库文件的密码。信任锚中的密钥库对象包含 CertPath API 用于验证证书链的可信度的可信根证书。

    4. 带用于密钥定位器和信任锚的密钥库。
    5. 带包含“密钥/值”对的映射。 例如,可指定值类型名和值类型统一资源标识 (URI)。此值类型指定生成器令牌的值类型的名称空间 URI,并表示这个类的令牌类型:
      值类型:http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3
      指定 X.509 证书令牌。
      值类型:http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1
      在公共密钥基础结构 (PKI) 路径中指定 X.509 证书。此回调处理程序用于创建以 PkiPath 格式编码的 X.509 证书。该证书作为二进制安全性令牌插入 SOAP 消息中的 Web Service 安全性头中。此回调处理程序需要密钥库。此回调处理程序不支持 CRL;因此,不需要或不使用证书集合库。如果使用此实现,那么必须在此面板上提供密钥库密码、路径和类型。
      值类型:http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#PKCS7
      指定 PKCS#7 格式的 X.509 证书列表和证书撤销列表。此回调处理程序用于创建以 PKCS#7 格式编码的 X.509 证书。该证书作为二进制安全性令牌插入 SOAP 消息中的 Web Service 安全性头中。此回调处理程序需要密钥库。可以在证书集合库中指定证书撤销列表 (CRL)。CRL 使用 PKCS#7 格式的 X.509 证书进行编码。如果使用此实现,那么必须提供密钥库密码、路径和类型。

      对于某些令牌,WebSphere Application Server 为值类型提供预定义的局部名。指定以下局部名时,不需要指定值类型 URI:

      值类型:http://www.ibm.com/websphere/appserver/tokentype/5.0.2
      对于 LTPA 令牌,可以使用 LTPA 作为值类型局部名。此局部名将导致为值类型统一资源标识 (URI) 指定 http://www.ibm.com/websphere/appserver/tokentype/5.0.2
      值类型:http://www.ibm.com/websphere/appserver/tokentype/5.0.2
      对于 LTPA 令牌传播,可以使用 LTPA_PROPAGATION 作为值类型局部名。此局部名将导致为值类型统一资源标识 (URI) 指定 http://www.ibm.com/websphere/appserver/tokentype
  8. 如果将用户名令牌指定为令牌生成器类名,那么可以指定以下令牌信息:
    1. 是否使用 IdentityAssertion 选项。 如果定义了身份断言,请选择此选项。此选项表明仅需要初始发送方的标识,并且此标识将插入 SOAP 消息中的 Web Service 安全性头中。例如,WebSphere Application Server 仅发送用户名令牌生成器的原始调用者的用户名。
    2. 是否使用 RunAsSubject 身份选项。 如果定义了身份断言并且您想要在下游调用的身份断言中使用 RunAs 身份取代初始调用者标识,请使用此选项。只有将用户名令牌配置为令牌生成器时,此选项才有效。
    3. 是否使用 sendRealm。
    4. 是否指定现时标志。

      此选项指示是否将现时标志包含在令牌生成器中。现时标志是一个嵌入在消息中的唯一的加密数字,以帮助停止用户名令牌的未授权重复攻击。仅当生成器令牌类型是用户名令牌时,现时标志才有效,而且现时标志仅对请求生成者绑定可用。

    5. 指定时间戳记的关键字。 此选项指示是否验证用户名令牌中的时间戳记。仅当合并令牌类型是用户名令牌时,此时间戳记才有效。
    6. 指定包含“密钥/值”对的映射。 例如,可指定值类型名和值类型统一资源标识 (URI)。此值类型指定生成器令牌的值类型的名称空间 URI,并表示这个类的令牌类型:
      URI 值类型:http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken
      指定用户名令牌。
  9. 如果将 Kerberos v5 令牌指定为令牌生成器类名,那么可以指定以下令牌信息:
    令牌信息 描述 缺省值
    name Kerberos 客户机主体名称  
    password Kerberos 客户机密码  
    realm 与 Kerberos 客户机相关联的 Kerberos 域 Kerberos 配置文件中的缺省域名。

    指定 null 以使用缺省值。

    targetService 与目标 Web service 相关联的 Kerberos 服务名称。  
    targetHost 与 Kerberos 服务名称相关联的 Kerberos 域名。  
    tokenValueType Oasis Kerberos 令牌概要文件 V1.1 规范中定义的 QName 中的 Kerberos 令牌值类型。 http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#GSS_Kerberosv5_AP_REQ
    targetRealm 与 Kerberos 服务名称相关联的 Kerberos 域名。 Kerberos 配置文件中的缺省域名
    prompt 用于启用登录提示的布尔值。 false
    supportTokenRequireSHA1 将 Kerberos 令牌用作支持令牌时,需要在后续请求消息中使用的 SHA1 密钥的布尔值。 false

    仅当保护支持的 Kerberos 令牌时,才使用 SHA1 密钥。如果设置为 true,那么总是使用 SHA1 密钥。

    alwaysAPREQ 表示客户机应总是在请求消息中发送 Kerberos AP_REQ 令牌的布尔值。 false

    在后续消息中改为使用 SHA1 密钥。 如果设置为 true,那么总是使用 Kerberos AP_REQ 令牌。

    requireDKT 请求消息保护的派生密钥的布尔值。 false
    clabel 派生密钥的客户机标签。 WS-SecureConversation

    指定 null 以使用缺省值。

    slabel 派生密钥的服务标签。 WS-SecureConversation

    指定 null 以使用缺省值。

    keylen 派生密钥的长度。 16

    指定零以使用缺省值。

    noncelen 现时标志的长度。 16

    指定零以使用缺省值。

    encComponent WSSEncryption 的实例。 将 encComponent 和 sigComponent 设置为 null,以便对第一个加密或签名组件进行初始化。然后,仅为第二个组件在回调处理程序构造函数中使用初始化的组件。
    sigComponent WSSSignature 的实例。 将 encComponent 和 sigComponent 设置为 null,以便对第一个加密或签名组件进行初始化。然后,仅为第二个组件在回调处理程序构造函数中使用初始化的组件。
    在 OASIS Kerberos 令牌概要文件 V1.1 规范中定义其他令牌值类型。指定令牌值类型作为局部名。不必为 Kerberos v5 令牌指定值类型 URI。
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ1510
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#GSS_Kerberosv5_AP_REQ1510
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ4120
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#GSS_Kerberosv5_AP_REQ4120
  10. 如果使用安全会话进行消息保护,那么必须指定以下信息:
    信息 描述
    bootstrapWSSGenerationContext 用于保护 RequestSecurityToken (RST) 令牌的引导程序配置。
    bootstrapWSSConmingContext 用于使用安全 RequestSecurityTokenResponse (RSTR) 的引导程序配置。
    ENDPOINT_URL 服务端点 URL。
    EncryptionAlgorithm 确定密钥大小。
    cLabel 创建派生密钥时使用的客户机标签。
    sLabel 创建派生密钥时使用的服务器标签。
  11. 将组件设置到 wssGenerationContext 对象中。
  12. 调用 wssGenerationContext.process() 方法。

结果

使用 Web Service 安全性 API (WSS API) 过程时,您可以配置令牌生成器。

下一步做什么

接下来必须指定类似的令牌使用者配置。

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



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