2013-02-11 38 views
6

我需要從Claim中獲取Windows令牌。該解決方案是使用ADFS 2.0並在IIS ASP.NET 4.0中運行的聲明感知WCF Web服務。 (Kerberos令牌需要向模擬的數據庫訪問).net 4.5中的c2WTS(對Windows令牌服務的聲明)

在.NET 3.5和4.0的C2WTS服務用於從權利要求書得到Windows標識:

的WindowsIdentity winId = S4UClient.UpnLogon(UPN);

但是,有關c2WTS的文檔聲明如下:「... [從.NET Framework 4.5開始,Windows Identity Foundation(WIF)已完全集成到.NET Framework中。主題,WIF 3.5,已棄用,只能在針對.NET Framework 3.5 SP1或.NET Framework 4進行開發時使用......「

.NET 4.5中的c2WTS等效於什麼?

回答

5

沒有等價物。但是你仍然可以安裝WIF來獲得C2WTS服務。

Saml安全令牌處理程序具有返回Windows身份的MapToWindows功能。這與C2WTS的作用類似 - 但是

1)Windows身份只能用於本地授權 - 要模擬您需要SYSTEM權限。這就是C2WTS的運行環境。 2)委託需要在AD中配置約束委託的令牌(與C2WTS一樣)

+0

謝謝你的建議。沒有在Saml安全令牌上嘗試.NET 4.5 MapToWindows,但正在使用C2WTS。我能夠獲得身份證明,但是在Linux上使用Oracle數據庫的委派不起作用。我們正在與受約束的委託在AD中通過協議轉換來爭取在Linux上的Oracle服務。我將這個標記爲答案,因爲它是正確的,但我的問題仍然存在,儘管事情還沒有整體發揮作用。 – HakonIngvaldsen 2013-03-20 13:39:38

0

S4U在此時建立。你不需要C2WTS。你可以這樣做:

var id = new WindowsIdentity(valueFromClaim); 
// continue your impersonation 

對於服務電話,如果你設置了憑據的DefaultCredentials,你應該確定,因爲這似乎是在SAML標記處理程序執行ToWindowsIdentity。

既然您要進入Oracle,您可能需要顯式創建Windows環境並模擬(請參閱:Creating a service for user (S4U) token)。

所有這一切都表明,您必須正確配置約束委派或委託才能正常工作。