2009-12-24 48 views
6

我在辦公室的主管告訴我,他看到了微軟「日內瓦」(現在的Windows身份驗證基礎)的預發佈版本的演示,其中一個開發商做以下內容:使用Windows身份驗證基礎登錄有人在一個ASP.net應用

  1. 他設置了某種ASP.net Web應用程序,用戶可以使用自定義登錄系統登錄。在幕後,Web應用程序將用戶作爲用戶登錄到Active Directory中。

  2. 用戶登錄英寸

  3. 一旦用戶登錄,在ASP.net Web應用程序的線程運行作爲登錄用戶的用戶會話的持續時間,並且可以訪問網絡上的資源(如表其訪問運行SQL查詢被控制的Active Directory)

步驟2)和3)完全一樣,採用「集成Windows身份驗證」中的「目錄安全性」選項卡設置IIS中的網站設置。步驟1)不同,因爲我們使用自定義登錄系統而不是Kerberos身份驗證。

我們要建立我們的應用程序之一,因爲在1描述的精確操作),2),3)。然而,我所見過的關於Windows Identify Foundation的所有文檔都是關於Cardspace和Federated Security。我們現在沒有興趣使用這些技術。

我們只是希望能夠登錄的用戶到幕後Active Directory帳戶。

是的,我們試過ActiveDirectoryMembershipProviderForms Authentication,但它是一個完整的kludge實際訪問網絡上的資源需要在每個頁面上模仿!

更新於2010年1月7日。好的,我一直在這裏工作了一段時間,而我設法提出的一切都達不到我想達到的目標。也許我想要的功能不在WIF的發佈版本中。

下面是我在哪裏了。我在MSDN上發現了一些文檔,指出在ASP.net中使用了三種不同的身份:由HttpContext.Current.User指定的身份,由Thread.CurrentPrincipal指定的身份,以及最終由WindowsIdentity.GetCurrent指定的身份。 link

在我想要使用我期望設計的過程的一個示例中,我想以登錄用戶的身份執行SQL查詢。在我的調試器中,我發現我很容易將HttpContext和Thread用戶設置爲登錄用戶。但是,當我連接到使用Windows身份驗證SQL服務器,它總是始終始終連接爲WindowsIdentity.GetCurrent用戶和用戶永遠是永遠永遠的ASP.net進程的身份除非我正在使用Windows身份驗證與模擬。我絕對不能在我的應用程序中使用Windows身份驗證,因爲我的用戶必須通過演奏一首神奇的長笛歌曲登錄,Windows身份驗證不支持使用魔笛歌曲登錄。

爲了澄清,沒有與獲得代表登錄的用戶一個WindowsIdentity(誰用魔笛歌曲登錄)沒有問題。問題是我無法使用WindowsIdentity爲我的用戶執行SQL查詢。

回答

5

WIF允許您對其進行配置,以便基於聲明的身份映射到AD帳戶,聲明可以是聯合身份聲明或通過信息卡交付。 c2WTS執行此功能。

即使當它因爲委託你總是不得不委派,如果你想使用AD身份IIS是假冒的地圖 - 這只是它是如何工作的,除非你設置Kerberos delegation爲IIS

+0

我的主管非常具體,他不想使用模擬。另外,最終用戶將通過在魔笛上播放歌曲來登錄。如果歌曲是正確的,則用戶以編程方式使用AD帳戶登錄。 我絕對沒有辦法繞過這個事實,即用戶通過在魔笛上播放歌曲來登錄。 我需要的是一種方法,使得程序的行爲就像他們使用Windows身份驗證登錄一旦他們正確播放魔笛歌曲。 – 2009-12-29 19:50:47

+0

不,你在問不可能的事。 Windows身份驗證使用模擬,如果你的主管說你不能使用它,那麼你不能模仿Windows身份驗證。 – blowdart 2009-12-29 20:09:31

+0

謝謝,blowdart。我必須糾正自己。我的意思是,當你在IIS中使用Windows身份驗證時,Web服務器透明地模擬登錄用戶。通過表單身份驗證,我必須以編程方式進行模擬,我們希望避免;看來,AdMembershipProvider完全不能幫助我。我無法使用Forms身份驗證cookie進行模仿。 我的支持。說他看到一個演示,日內瓦以某種方式使用它,以便用戶使用AD帳戶自動登錄,即使用戶使用他的魔笛歌曲登錄。 – 2009-12-29 22:50:09

1

你可以在ASP.net中使用Identity Impersonation實現相同的功能。您還需要爲您的Web應用啓用Windows集成身份驗證。這將解決目的。如果登錄用戶沒有訪問資源所需的權限,那麼您將會遇到必須處理的安全性異常。

相關問題