验证使用者令牌以保护消息真实性

在使用者端使用此令牌使用者信息来合并和验证安全性令牌。缺省情况下,使用用户名令牌、X509 令牌和 LTPA 令牌来保护消息真实性。

开始之前

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

限制: com.ibm.wsspi.wssecurity.token.TokenConsumingComponent 接口不与 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. 生成 wssConsumingContext 实例。

    WSSConsumingContext 接口存储用于使用 Web Service 安全性 (WS-Security) 的组件,例如验证、解密、安全性令牌和时间戳记。调用 validate() 方法时,将验证所有这些组件。

  3. 创建使用者端组件,例如 WSSVerification 和 WSSDecryption 对象。
  4. 通过指定 JAAS 登录配置的名称来指定 JAAS 配置。 Java 认证和授权服务 (JAAS) 配置指定 JAAS 配置的名称。JAAS 配置指定令牌如何登录到使用者端上。不要移除预定义的系统或应用程序登录配置。但是,在这些配置中,您可以添加模块类名并指定 WebSphere Application Server 装入每个模块的顺序。
  5. 指定令牌使用者类名。 令牌使用者类名指定必需信息来验证 SecurityToken。缺省情况下,使用用户名令牌、X.509 令牌和 LTPA 令牌来保护消息真实性。
  6. 通过指定回调处理程序类名并指定回调处理程序密钥来指定回调处理程序的设置。 此类名是用于安全性令牌框架插件的回调处理程序实现类的名称。
    WebSphere Application Server 为使用者端提供了以下缺省回调处理程序实现:
    com.ibm.websphere.wssecurity.callbackhandler.PropertyCallback
    这个类是一个回调,用于处理 Web Service 安全性 (WS-Security) 配置 XMI 文件中各个元素中的“名称/值”对。
    ccom.ibm.websphere.wssecurity.callbackhandler.UNTConsumeCallbackHandler
    这个类是使用者端上用户名令牌的回调处理程序。此实例用于设置到 WSSConsumingContext 对象以验证用户名令牌。仅将此实现用于 Java Platform, Enterprise Edition (Java EE) 应用程序客户机。
    com.ibm.websphere.wssecurity.callbackhandler.X509ConsumeCallbackHandler
    这个类是用于验证 X.509 证书的回调处理程序,此证书插入到 SOAP 消息中的 Web Service 安全性头中,作为使用者端的二进制安全性令牌。此实例用于生成 WSSVerification 对象和 WSSDecryption 对象,并将这些对象设置到 WSSConsumingContext 对象以验证 X.509 二进制安全性令牌。此回调处理程序需要密钥库和密钥定义。如果使用此实现,那么生成器端上必须提供了密钥库密码、路径和类型。
    com.ibm.websphere.wssecurity.callbackhandler.LTPAConsumeCallbackHandler
    这个类是使用者端上轻量级第三方认证 (LTPA) 令牌的回调处理程序。此实例用于生成 WSSVerification 和 WSSDecryption 对象以验证 LTPA 令牌。

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

    com.ibm.websphere.wssecurity.callbackhandler.KRBTokenConsumeCallbackHandler
    这个类是使用者端上 Kerberos v5 令牌的回调处理程序。此实例用于设置 WSSConsumingContext 对象,以将 Kerberos v5 AP-REQ 作为二进制安全性令牌进行使用。 此实例也用于生成 WSSVerification 和 WSSDecryption 对象,以在 SOAP 消息验证和解密中使用 Kerberos 会话密钥或派生的密钥。
  7. 如果指定了 X.509 令牌,那么还需指定其他令牌信息。
    表 1. X.509 令牌的信息. 使用 X.509 令牌来认证消息。
    令牌信息 描述
    keyStoreRef 用于密钥定位器的密钥库的引用名称。
    keyStorePath 根据需要从其中装入密钥库的密钥库文件路径。建议您在路径名中使用 ${USER_INSTALL_ROOT} 变量,因为此路径将扩展到机器上 WebSphere Application Server 路径。使用 X.509 令牌回调处理程序实现时需要此路径。
    keyStorePassword 用于检查密钥库的完整性的密码,或者是用于解锁密钥库以及访问密钥库文件的密钥库密码。密钥库及其配置用于 WebSphere Application Server 提供的一些缺省回调处理程序实现。
    keyStoreType 用于密钥定位器的密钥库的密钥库类型。此选择指示密钥库文件所使用的格式。可选择以下值:
    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
    trustAnchorPath 从其中装入信任锚的文件路径。
    trustAnchorType 信任锚的类型。
    trustAnchorPassword 用于检查信任锚的完整性的密码,或者是用于解锁密钥库的密码。
    certStores 证书库的列表。证书集合库包含不可信的中介证书的列表和证书撤销列表 (CRL)。该证书集合库用于入局 X.509 格式的安全性令牌的证书路径验证。
    provider 安全性提供程序。

    可以为 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. 是否指定现时标志。

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

    2. 指定时间戳记的关键字。 此选项指示是否验证用户名令牌中的时间戳记。仅当合并令牌类型是用户名令牌时,此时间戳记才有效。
    3. 指定包含“密钥/值”对的映射。 例如,可指定值类型名和值类型统一资源标识 (URI)。此值类型指定使用者令牌的值类型的名称空间 URI,并表示这个类的令牌类型:
      URI 值类型:http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken
      指定用户名令牌。
  9. 如果将 Kerberos v5 令牌指定为令牌生成器类名,那么可以指定以下令牌信息:
    令牌信息 描述 缺省值
    tokenValueType Oasis Kerberos 令牌概要文件 V1.1 规范中定义的 QName 中的 Kerberos 令牌值类型。 http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#GSS_Kerberosv5_AP_REQ
    requireDKT 请求消息保护的派生密钥的布尔值。 false
    clabel 派生密钥的客户机标签。 WS-SecureConversation

    指定 null 以使用缺省值。

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

    指定 null 以使用缺省值。

    keylen 派生密钥的长度。 16

    指定零以使用缺省值。

    supportTokenRequireSHA1 将 Kerberos 令牌用作支持令牌时,需要在后续请求消息中使用的 SHA1 密钥的布尔值。 false

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

    decComponent WSSDecryption 的实例。 将 decComponent 和 verComponent 设置为 null,以便对第一个解密或验证组件进行初始化。然后,仅为第二个组件在回调处理程序构造函数中使用初始化的组件。
    verComponent WSSVerfication 的实例。 将 decComponent 和 verComponent 设置为 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. 如果使用安全会话进行消息保护,那么必须指定以下信息:
    信息 描述
    EncryptionAlgorithm 确定密钥大小。
    cLabel 创建派生密钥时使用的客户机标签。
    sLabel 创建派生密钥时使用的服务器标签。
  11. 将组件设置到 wssConsumingContext 对象中。
  12. 调用 wssConsumingContext.process() 方法。

结果

您通过 WSS API 配置了令牌使用者。

下一步做什么

必须指定类似的令牌生成器配置(如果尚未完成)。

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



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