2011-09-20 24 views
7

我正在考慮創建一個應用程序以部署到天藍色雲。考慮Azure的主要原因是訪問控制服務。我想爲我的應用程序接受盡可能多的不同證書類型,特別是Facebook。客戶端WPF應用程序如何使用Azure上的WCF服務進行身份驗證?

某些用戶將使用基於HTML的應用程序,而其他人則使用WPF客戶端應用程序。問題是,我如何使用他們想要的提供者來認證客戶端,然後與WCF服務進行通信。我猜我需要在我的應用程序中使用Web瀏覽器組件,或者彈出一個外部瀏覽器(理想情況下支持偏執狂用戶的兩個選項),但我不清楚如何使用該連接進行WCF服務。

+1

+1有趣的問題。我不確定有一個簡單的答案,但我會看這個。 –

+1

剛剛發現http://msdn.microsoft.com/en-us/IdentityTrainingCourse_SilverligthAndIdentity2010這可能會變得很有用,我現在正在閱讀它。 – ForbesLindesay

+0

不幸的是,瀏覽器外的例子使用用戶名和密碼,所以不支持Facebook – ForbesLindesay

回答

0

考慮從應用程序和WCF服務之間的認證中分離出用戶對應用程序的認證。

爲了保護對WCF服務的訪問,您可以使用ACS實現使用簡單Web令牌(SWT)進行身份驗證。有幾個例子可以通過您選擇的搜索引擎獲得。

對不起,我現在不能給你一個更具體的例子。我使用智能設備進行移動,因此對工具的訪問受限。

+0

WCF服務需要知道用戶是誰,並且能夠保證它的真實性,我不完全清楚您的解決方案是如何提供的。 SWT是否認證應用程序或用戶? – ForbesLindesay

0

我想你的打算是如何驗證/授權用戶這個WCF服務的權利?在這種情況下,您可以查看「Windows 7電話應用程序」示例:http://msdn.microsoft.com/en-us/library/gg983271.aspx。在這裏你會看到這個示例使用「javascriptnotify」協議。

對於WPF WebBrowser控件,有許多文章描述瞭如何從DOM中的javascript獲取通知。

通過這種方式,您可以爲您的WPF應用程序獲取令牌,然後您將需要使用相同的令牌對WCF服務進行身份驗證。

對於Web應用程序,您可以從WSFam模塊獲取令牌。一種方法可能是在WSFam上註冊SecurityTokenReceived事件。

對於這兩種情況,您都可以通過這種方式獲得SAML令牌。

然後,您可以爲WCF創作自己的自定義SAML TokenProvider,並使用從ACS獲得的SAML令牌與您的服務器通話。

0

你在找什麼叫做'主動聯合'。 請參閱this question

通常情況下,您的Web客戶端將使用被動表單,並將它們重定向到安全令牌服務擁有的登錄頁面。您無法重定向wpf或winforms應用程序,因此您的應用程序需要通過瀏覽器爲您執行的後臺動作,包括協商和緩存從STS收到的安全令牌,然後在每個請求中顯示它。

相關問題