2012-07-03 47 views
0

我有一個很難包裝我周圍的一些建築元素頭部保護由許多不同的應用所消耗的核心WCF服務。確保WCF服務在多個項目

在內部,我們有一個應用程序,允許HR鄉親更新庇隆的詳細信息。這包含在一個WPF應用程序中。在外部,我們有一個網站,允許個人認證(通過AD會員提供商)並更新其詳細信息。

我們不希望用戶能夠看到其他用戶的信息(原因很明顯)。但我們不希望在用戶登錄的同一個Web應用程序中託管此服務。下面是該架構將如何看待從視覺工作室的視角:

ServiceApplication

WpfApplication

MVCWebApplication

他們不一樣域內部存在,例如,服務應用將是在http://www.service1.com/Service.svc託管和MVC應用程序將在http://www.updateyourprofile.com主辦。因此,用戶登錄到http://www.updateyourprofile.com,我們希望通過JSON創建Wcf服務。服務應用程序,wpf應用程序和mvc Web應用程序都將使用AD憑據進行身份驗證。但是,我們如何確保服務的安全,以便登錄到mvc Web應用程序的用戶只能看到他們的信息?

大多數我看到的例子說,使用該服務內HttpContext.Current.User檢查。但是,由於用戶在不同的站點進行身份驗證,cookie如何傳輸?您是否最終必須在您想要使用的相同Web應用程序內發佈您的服務,以便cookies透明傳播?

或者它是不是可能有一個集中的服務與不同的應用程序,使用相同的認證存儲來確定誰有權訪問服務上的內容?

回答

0

你正在尋找的是一種聯邦認證系統,它被所有入口點使用。這是Windows Identity Foundation可以幫助您構建的。

在每個應用程序中,根據嵌入在由認證系統發佈的每個用戶的安全令牌中的聲明,訪問控制將基於聲明。

There's an entire book on the subject on MSDN.