X.509 二进制安全性令牌
X.509 二进制安全性令牌是 X.509 公用证书的 base64 编码表示。
下表描述了 X.509 令牌类型。
X.509 令牌类型 | 描述 |
---|---|
X.509 V1 | 仅包含 X.509 公用证书。 |
X.509 V3 | 仅包含 X.509 公用证书。 |
PKIPath | 包含打包在 PKIPath 中的 X.509 公用证书的已排序列表。X509PKIPathv1 令牌类型可用于表示证书路径。 |
PKCS7 | 包含 X.509 证书的列表以及包装在 PKCS#7 包装器中的证书撤销列表 (CRL)(后者可选)。PKCS7 令牌可用于表示证书路径。 |
通常,X.509 令牌用于通过 XML 数字签名或 XML 加密来保护 SOAP 消息。虽然未建议,但 X.509 令牌也可用作认证令牌。
使用 X.509 令牌进行认证
对令牌进行认证时,将验证令牌的发送方是否是他所标称的发送方。您可以提取该消息中发送的一部分公共信息(例如用户标识),并通过某种方式使用只能由发送方提供的专用信息(例如密码)对该信息进行验证。
以下是一个非常简单的示例:当您对 UsernameToken 进行认证时,将在 SOAP 消息中传递用户名和密码,并在端点处针对用户注册表检查该用户名和密码。
对于 X.509 证书,公共信息是公用密钥/DN,专用信息是专用密钥。与 UsernameToken 的密码不同的是,在消息中不发送专用密钥。
使用 X.509 令牌来签署消息时,将使用以下过程:
- 启用信任时,如果配置了信任库和证书库,那么将对信任库和证书库评估证书。这将捕获到信任错误、证书链错误、撤销错误和证书过期等。例如,您可以在信任库中存储特定的 DN 以显式信任每一个证书,也可以只存储根 CA 以信任从此 CA 颁发的所有证书,但不信任从其他 CA 颁发的证书。
- 运行时将通过验证签名,验证消息的发送方是否具有与证书相关联的专用密钥。如果不能验证签名,那就说明发生了下列其中一种情况:
- 签署消息时所用的专用密钥与消息中的公用密钥不匹配。
- 发送消息之后,对该消息进行了修改。
验证签名之后,您就知道消息的发送方是专用密钥的持有人;即,发送方是他所标称的发送方。
如果您在消息中传递了 X.509 令牌但不使用它的专用密钥来签署该消息,那么您将不执行步骤 #2。您将不验证消息的发送方是否是专用密钥的持有人(即,他所标称的发送方)。签署消息时,您正在执行只能由专用密钥的持有人才可以执行的操作。
使用未受保护的 X.509 令牌时(即,不使用 X.509 令牌来签署消息),以下方式可使系统受到危害:
- 捕获有效消息并在相同消息中替换为攻击者的 X.509 令牌。
建议您不要在消息中发送未受保护的 X.509 令牌。如果要使用 X.509 令牌进行认证,那么建议您通过调用者配置在消息中发送一个 X.509 令牌并将该 X.509 令牌同时用于数字签名和认证。签名部件引用将用在调用者设置中。
下表描述了 X.509 令牌值类型。
X.509 令牌类型 | 值类型 |
---|---|
X.509 V1 | http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509 |
X.509 V3 | http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3 |
PKIPath | http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1 |
PKCS7 | http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#PKCS7 |