2012-01-21 59 views
4

我有一個通過ACS使用用戶名驗證的WCF服務。這在我使用服務標識時很好,但是當我嘗試使用Windows Live ID憑據時,出現以下錯誤:如何通過ACS與Windows Live ID集成來對WCF服務進行身份驗證?

System.ServiceModel.FaultException:ACS10002:處理SOAP正文時發生錯誤。 ACS50012:認證失敗。 ACS50026:名稱爲「[email protected]」的校長不是已知的校長。

不幸的是,我還沒有找到一個如何使用Windows Live ID與WCF服務的例子。我能找到的唯一例子似乎都集中在將多個身份提供者與ASP.NET或MVC網站集成在一起。

在這方面的任何幫助,將不勝感激....

回答

3

ACS將無法直接進行身份驗證您的Live ID用戶名和密碼。 ACS充當Live ID的聯合提供者,它是一箇中介,所以它只會消耗Windows Live ID發佈的令牌。 ACS支持基於被動(瀏覽器重定向)方案的開箱即用身份驗證,但對於您可能考慮使用Live Connect API的WCF服務來說,ACS支持Live ID身份驗證。

要在您的服務中使用LiveID,您的客戶端首先將自身認證爲LiveID,然後向您的WCF服務呈現一個LiveID發佈的令牌。儘管如此,還是會有一些箍筋來設置所有這些。

要使用Live Connect API,您需要將WCF服務註冊爲具有Live ID的應用程序。使用您的WCF服務的客戶端需要能夠處理Live ID將提示的基於Web的登錄頁面和用戶同意頁面。下面的文檔是一個良好的開端

http://msdn.microsoft.com/en-us/library/hh243641.aspx

http://msdn.microsoft.com/en-us/library/hh243647.aspx

http://msdn.microsoft.com/en-us/library/windows/apps/hh465098.aspx

下一個問題是,你會從實時連接得到的將是在JWT令牌(JSON網絡令牌)格式。我不確定您是否可以通過實時連接請求不同的令牌格式,但是如果您的WCF服務身份驗證是基於WIF的,那麼它很可能需要SAML令牌。 JWT是WIF尚未支持的一種相當新的令牌格式,所以您必須在可以理解JWT令牌的服務上配置WIF SecurityTokenHandler。上面的第三個鏈接有一些閱讀JWT的代碼,這至少是一個開始。

+0

哇!感謝您的詳細有用的回覆.... –

1

我碰到這篇文章,使用身份委派的上述用例: http://social.technet.microsoft.com/wiki/contents/articles/7286.asp-net-relying-party-to-wcf-soap-relying-party-delegation-with-windows-live-id.aspx 如果我成功與否將發佈。請享用!

+1

歡迎來到堆棧溢出!您不應該僅僅給出另一個網站的鏈接作爲答案,因爲該網站將來可能會過時。相反,單擊此答案上的「編輯」鏈接,並在此處包含解決方案的主要部分。請參閱:http://meta.stackexchange.com/q/8259 –

+0

上述實現像魅力一樣工作。解釋很棒。只要按照它精確。 – Rucheeg

相關問題