2010-09-12 81 views
7

我很想知道如何才能從已經通過WIF驗證的WIF應用程序發送安全令牌給啓用WIF的WCF服務。如何將(Claim)安全令牌傳遞給WIF啓用WCF服務

任何援助將appriciated

+0

我希望你會得到一個答案。這是默認設計:Web App - > WCF服務。我們鼓勵.Net開發者使用WIF,但我所看到的實施建議不是規定性的。 – 2010-10-01 15:52:14

回答

6

答案並不簡單,但下面的步驟構成的「建議模式」和下面的MSDN文章中記載: Identity Delegation with AD FS 2.0 Step-by-Step Guide

總之

  1. 允許您的Web應用程序訪問特殊令牌(Bootstrap令牌),該令牌可用於代表使用STS進行身份驗證的用戶請求服務,方法是添加一個i TEM在web.config:

    saveBootstrapTokens="true"

  2. 創建WCF WIF功能的服務和STS之間新的信任,因此「知道」是該服務可以作爲另一個身份驗證的用戶(ActsAS)採取行動。 希望你使用ADFS v2,因爲我想象用ActsA寫一個自定義STS的所有管道是行不通的。

  3. 當調用WCF服務創建專門傳遞BootStap令牌的新渠道:

    channel = factory.CreateChannelActingAs(callerToken);

我有點擔心的性能,因爲所有頻道創建的,以及如何WCF服務和Web應用程序需要與STS服務進行交談。

0

@大衛埃文斯 - 我沒有追加到你的答案的聲望。但是,我相信最後一步是不正確的,並且可能非常混亂,因爲您可以在ActingAs調用中有效地傳遞引導令牌。

問題是您聲明您應該傳遞引導令牌。然而,發生的事情是,在建立ActAs信任的過程中,會創建ActAs \ Issued Token。該令牌不是引導令牌。事實上,您需要用戶的引導令牌來創建這個新的令牌,它代表依賴派對作爲特定的經過驗證的用戶。

因此,第二步是Create ActAs標記(涉及您提到的所有內容)。 第三步將使用ActAs令牌調用WCF服務,而不是引導令牌。

0

Microsoft使用WIF 4.5提供具有不同身份示例的Identity Traningskit。示例InvokingViaDelegatedAccess in there demonstrates perfectly the usage of the ActAs- delegation scenario. However, it cost me days to bring the InvokingViaDelegatedAccess`示例啓動並運行。在做了很多解決方法之後,我終於能夠運行設置並執行這個例子。我寫了一個安裝手冊,你可以在這裏下載:

enter link description here 享受))

的例子但是在具有的Visual Studio 2012安裝在Windows 7虛擬機上運行。

這是正確的,你必須保存引導令牌。登錄到Web應用程序後,必須首先緩存從SecurityTokenService發出的令牌。使用WIF 4.5這可以用在web.config以下命令來完成:

<identityConfiguration saveBootstrapContext="true"> 

的WCF的ChannelFactory具有然後不同的方法(CreateChannelWithActAsToken,CreateChannelWithIssuedToken,WithOnBehalfOfToken)從後端應用到WCF支撐委派方案服務。使用ActAs方案,CreateChannelWithActAsToken正在提取引導令牌,將引導令牌發送給STS,STS使用新(或複製)的聲明值創建新的SecurityToken,然後使用ActAs- SecurityToken調用後端服務。使用此方法,每次調用服務時都會發佈一個新的ActAs- SecurityToken。如果你不想這樣做,CreateChannelWithIssuedToken可能會成爲你的bether方法,因爲你可以將緩存的標記緩存到一個cookie中,並重新用於其他調用。

/帕特里克·塞勒,開發.NET www.itconsulting24.com