2011-07-22 119 views
1

我有一个用WIF构建的自定义STS。如果我在同一台服务器上安装了依赖方和STS,我可以正常工作。STS是否需要安装RP证书?

但是,使用远程机器时出现ID4036错误。正如我深入研究的一样,我发现默认情况下,在我的STS中始终使用本地证书封装出站令牌,而不是依赖方请求的证书。一种解决方案是在STS上安装依赖方使用的证书(仅限公钥),并为STS编码以使用该证书。

但是,由于我在其他服务器上添加了其他依赖方,因此会产生问题。

下面是一个例子:在MySTS

STS - 标志与SigningCert令牌。

上MyWebServer01依赖方 - 要加密/与MyWebServer01Cert解密(拥有公钥/私钥)

我可以MySTS安装MyWebServer01Cert并设置STS使用该加密令牌,一切都应该工作。但是,假设我想将一个依赖方应用程序添加到MyWebServer02。除非我安装MyWebServer01Cert的公钥和私钥,否则它将不起作用。

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

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

回答

1

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

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

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

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

+0

谢谢,我相信你也是对的。我还有其他一些问题,但他们可能应该拥有自己的主题。 –