我已经实现了一个允许客户端使用X509证书进行身份验证的STS。 WIF(现在内置于.NET 4.5中)具有X509SecurityToken
类,似乎可以完美地适用于此场景。在我的情况下,我还想传递一个 ActAs 令牌,但在我看来,虽然ActAs令牌经过验证(由不同的令牌处理程序集合),但对于X509SecurityToken
,此验证不会证明调用者拥有私钥,就像将令牌用作消息凭据时一样。
这有什么办法吗?我如何要求ActAs令牌证明它有私钥?
答案 0 :(得分:-1)
出示公钥或X509证书并不能证明我是私钥的持有人 那不是目的。
但签名证书也不能证明我是私钥的持有者。
如果我发给你一张George W的亲笔签名照片并且你确认签名是真实的,那么乔治W的照片证明我是乔治W?
你验证我是乔治W的方式是你给我发了一个随机的挑战(在过去它被称为nounce)并且我用我的私钥签名。
然后使用公钥验证签名(通过x509证书)
证书的目的是识别具有证书而不是私钥持有者的实体
它确实不能证实我是乔治W.
它只是验证我在那个时候有私钥。
实际上,如果身份验证基于签名证书,那么您可以通过任何经过验证的服务器进行身份验证,该服务器被误导的假设证明签名证书证明我是私钥的持有者。
您的困惑不仅限于PKI,还包括一般的安全性 要加密频道,加密密钥每隔x段更改一次。