2011-07-22 173 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

謝謝,我相信你也是對的。我還有其他一些問題,但他們可能應該擁有自己的主題。 –