密钥定位器
密钥定位器是一种机制的抽象,该机制检索密钥以进行数字签名和加密。Java™ 认证和授权服务 (JAAS) 登录模块实现用来在生成器端创建安全性令牌以及在使用者端验证(认证)安全性令牌。
- Java 密钥库文件
- 数据库
- Kerberos KDC 服务器(仅使用 JAX-WS 的 WebSphere® Application Server)
- Trust service 可能提供安全上下文令牌和密钥(仅使用 JAX-WS 的 WebSphere Application Server)
- 密钥的字符串标签,它是显式地通过应用程序编程接口 (API) 传递的。在密钥定位器内部维护每个密钥及其名称(字符串标签)之间的关系。
- 密钥定位器的实现上下文;不向密钥定位器传递显式信息。密钥定位器根据实现上下文确定适当的密钥。
WebSphere Application Server V6 和更高版本支持基于密钥的签名 HMAC-SHA1。 如果使用 HMAC-SHA1,那么 SOAP 消息将不包含二进制安全性令牌。在这种情况下,假设消息中的密钥信息包含密钥名,此密钥名用于指定密钥库中的密钥。
由于密钥定位器支持基于公用密钥的签名,所以用于验证的密钥会作为入局消息中的 <BinarySecurityToken> 元素嵌入在 X.509 证书中。例如,密钥定位器可从上下文获取调用者的标识,并可检索调用者的公用密钥用于响应加密。
本节描述密钥定位器的使用方案。
签名:
在 Web Service 安全性配置中指定签名密钥的名称。将此值传递到密钥定位器并返回实际密钥。也可以返回相应的 X.509 证书。
验证:
- KeyStoreKeyLocator
- 使用密钥库检索用于数字签名以及验证或加密和解密的密钥。
- X509CertKeyLocator
- 使用消息中的 X.509 证书检索用于验证或解密的密钥。
- SignerCertKeyLocator
- 使用请求消息中的 X.509 证书检索用于在响应消息中加密的密钥。
加密:
在 Web Service 安全性配置中指定加密密钥的名称。将此值传递到密钥定位器并返回实际密钥。在服务器端上,您可以使用 SignerCertKeyLocator 从请求消息中的 X.509 证书检索用于在响应消息中加密的密钥。
解密:
Web Service 安全性规范建议使用密钥标识而不是密钥名。然而,虽然在因特网工程任务组织 (IETF) 请求评论 (RFC) 3280 中定义了公用密钥标识计算算法,但是没有达成一致意见的密钥算法。因此,Web Service 安全性的当前实现仅在执行基于公用密钥的加密时使用标识。否则,使用序数密钥名。
当您使用基于公用密钥的加密时,密钥标识的值嵌入在入局加密的消息中。然后,Web Service 安全性实现搜索密钥定位器管理的所有密钥,并使用标识值与消息中的值匹配的密钥解密消息。
当您使用基于密钥的加密时,密钥名的值嵌入在入局加密的消息中。Web Service 安全性实现用与消息中的名称匹配的名称为密钥请求密钥定位器,并使用密钥解密消息。