2010-06-15 77 views

回答

2

您需要在網站創建一個網頁B站點A將用戶重定向太那個設置與理想值的cookie。例如

http://siteb.com/authenticate.aspx?authtoken=15128901428901428904jasklads&returnUrl=http://siteb.com/index.aspx

authenticate.aspx會設置一個cookie,然後每一個請求會得到的authToken。

+0

好的,好主意。但在使用Cookie時我有點懷疑。如果客戶端電腦禁用Cookie,或者更糟,如果黑客希望,他/她可以操縱Cookie。 此外,我希望模擬現場系統的測試環境。實際的身份驗證通過HTTP頭進行。在生產中,他們使用CA Inc提供的一些網關(不確定具體的產品名稱)。 – 2010-07-19 02:09:38

+0

您唯一的選擇是使用Cookies或將其存儲在URL上,您無法命令客戶端發送自定義http標題。 – bleevo 2010-07-21 10:44:25

+0

另外如果你擔心cookies。 http://msdn.microsoft.com/en-us/library/aa479314.aspx 而「黑客」可以像cookie一樣簡單地改變http頭。 – bleevo 2010-07-21 10:45:15

0

服務器可以在HTTP標頭中發送給客戶端上的重定向,但客戶不會發回給其他遠程服務器。

在這種情況下,理想的解決方案是使用Cookie或QueryString變量。如果主機名稱不同,Cookie可能會遭遇跨域問題並變得複雜。

在上述任何一種方法中,必須注意不要因爲信息是來自客戶端(或某些黑帽)的用戶輸入而信任此信息而造成安全漏洞。

+0

是的..它的服務器端實現,我堅持。我如何獲得一個asp.net應用程序發送自定義HTTP標頭到另一個域?我正在尋找一種解決方案,將控件重定向到服務器的另一個URL,即可能使用Response.Redirect? – 2010-07-12 01:11:42

+0

是的,Response.Redirect如果數據足夠小以便加密,則將加密值放在QueryString(Forget標頭)上。需要從服務器A到服務器B共享密鑰。同步機器密鑰並使用它們來加密/解密數據。如果這不可能,或者數據太多,則在QueryString上放置一個如Guid的標記。然後在服務器之間使用一個反向通道,服務器B可以調用服務器A並詢問輸入請求的詳細信息。這種定製解決方案非常容易出錯,請務必考慮攻擊媒介。看看Windows Identity Foundation。 – umbyersw 2010-07-12 06:50:56

相關問題