STS是否需要安装RP证书?

时间:2011-07-22 14:53:39

标签: certificate wif

我有一个使用WIF构建的自定义STS。如果我在同一台服务器上有依赖方和STS,我可以让它工作。

但是,使用远程计算机时出现ID4036错误。正如我挖掘它一样,我发现默认情况下,我的STS始终使用本地证书而不是依赖方请求的证书来加密出站令牌。一种解决方案是在STS上安装依赖方使用的证书(仅限公共密钥),并对STS进行编码以使用该证书。

然而,当我在不同服务器上添加其他依赖方时,这会产生问题。

这是一个例子:

MySTS上的STS - 使用SigningCert签署令牌。

MyWebServer01上的依赖方 - 希望使用MyWebServer01Cert加密/解密(拥有公钥/私钥)

我可以在MySTS上安装MyWebServer01Cert并将STS设置为用于加密令牌,并且一切都应该有效。但是,假设我想向MyWebServer02添加一个依赖方应用程序。除非我安装MyWebServer01Cert的公钥和私钥,否则它将无法工作。

我认为您可以简单地将公钥传输到STS,每个RP都可以使用它自己 - 有点像SSL。情况不是这样吗?

任何帮助/建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

首先,对于加密,只需要公钥。你实际上从不想泄露证书的私钥。

如果您使用WS Federation协议(通常用于网站上的STS方案),则您的RP服务器不会发送对STS的请求,而是由用户的浏览器发送。我怀疑你打电话告诉浏览器使用上一个站点的公钥进行https通信。另一方面,加密令牌由rp服务器解密(这意味着RP服务器必须知道用于加密令牌的证书的私钥)。

考虑到这种情况,我非常确定RP证书的公钥必须存在于STS上,并且不能包含在请求中。其他所有内容都可能只是与您的自定义STS一起使用的肮脏黑客(例如,包括公钥作为参数)。

至少对于“被动登录”方案。对于WCF,您可以将服务器的证书作为客户端证书附加到您的请求中。但我自己没试过这个。