如何使用X509SecurityToken作为ActAs令牌并验证调用者是否具有私钥?

时间:2013-11-05 18:10:02

标签: .net security wif sts-securitytokenservice ws-trust

我已经实现了一个允许客户端使用X509证书进行身份验证的STS。 WIF(现在内置于.NET 4.5中)具有X509SecurityToken类,似乎可以完美地适用于此场景。在我的情况下,我还想传递一个 ActAs 令牌,但在我看来,虽然ActAs令牌经过验证(由不同的令牌处理程序集合),但对于X509SecurityToken,此验证不会证明调用者拥有私钥,就像将令牌用作消息凭据时一样。

这有什么办法吗?我如何要求ActAs令牌证明它有私钥?

1 个答案:

答案 0 :(得分:-1)

出示公钥或X509证书并不能证明我是私钥的持有人 那不是目的。

但签名证书也不能证明我是私钥的持有者。

如果我发给你一张George W的亲笔签名照片并且你确认签名是真实的,那么乔治W的照片证明我是乔治W?

你验证我是乔治W的方式是你给我发了一个随机的挑战(在过去它被称为nounce)并且我用我的私钥签名。
然后使用公钥验证签名(通过x509证书) 证书的目的是识别具有证书而不是私钥持有者的实体 它确实不能证实我是乔治W. 它只是验证我在那个时候有私钥。

实际上,如果身份验证基于签名证书,那么您可以通过任何经过验证的服务器进行身份验证,该服务器被误导的假设证明签名证书证明我是私钥的持有者。

您的困惑不仅限于PKI,还包括一般的安全性 要加密频道,加密密钥每隔x段更改一次。