2010-06-28 15 views
2

使用Forms身份驗證時可以模擬用戶嗎?通過表單身份驗證從代碼後面模擬用戶

問題是我想要一個外部登錄用戶和一個內部網站,只是使用集成的Windows安全性和用戶需要被模擬。

我環顧四周,發現約翰的答案here非常好,但我不太明白我怎麼可以將它與我的表單身份驗證混合。

對此提出建議?


編輯

我想有一個<asp:Login />控制和這個控件將針對具有相同的一組用戶的Windows計算機上,我想在使用模擬的一個Active Directory進行身份驗證。

我的問題是,我不知道如何使用提供給<asp:Login />控件的相同用戶名和密碼進行impersoante操作。

+0

引用的答案對我來說似乎很簡單。你錯過了什麼?模仿意味着他們有一個Windows帳戶,並且您正在使用此帳戶進行身份驗證(和模擬)。也許關於你如何期望它的更多細節會幫助我理解。 – tvanfosson 2010-06-28 13:12:43

+0

@tvanfosson,試圖澄清一點。 – 2010-06-28 13:19:33

回答

1

爲了解決此問題,您需要訪問用戶的ID和密碼。我不相信你可以使用登錄用戶控件來獲得這個;您需要創建自己的登錄表單並自行處理登錄操作。在用戶通過身份驗證並且需要代表他們訪問內部站點時,請將用戶的用戶名和密碼(最好是安全字符串)保存在會話中,使用參考示例中的Impersonator類使用憑證模擬它們。

using (var context = Impersonator.LogOn(username, password)) 
    { 
     try 
     { 
     .... 
     } 
     finally 
     { 
     context.Undo(); 
     } 
    } 
+0

我很害怕它必須這樣。你知道,如果有任何方法,我可以把整個網站變成「模仿」模式? – 2010-06-28 13:33:21

+0

@Filip - 我不認爲這種冒充模式可以通過表單身份驗證「開箱即用」,因爲不能保證使用窗體身份驗證是Windows安全令牌。你是否真的需要模仿或者授權是否足夠 - 即讓運行內部站點的帳戶有足夠的權利來代表每個用戶做事情,然後簡單地告訴它應該爲哪個用戶工作。 – tvanfosson 2010-06-28 14:14:37

+0

@tvanfosson,不幸的代表團是不夠的。我們所調用的處於底層的系統將使用已登錄的Windows用戶,因此我們需要模擬用戶。我當然可以在上述所有通話中使用上述模仿,但它仍然是一件麻煩事。 – 2010-06-28 14:18:34

相關問題