我在www.domain.com
上設置了一個站點,該站點可以對用戶進行身份驗證並將其憑據保存在Cookie中。跨不同子域(但不是全部)進行身份驗證
有時用戶訪問在不同子域上的不同服務器上設置的處理程序。 handlers.domain.com
我不能使用通配符子域的cookies(曲奇不應該適用於其他子域)
我訪問控制解決了到現在爲止是用於handlers.domain.com
每個URL有一個GUID具體到用戶。其他站點上的處理程序將假定該GUID所有者的身份。這當然不是一個很好的安全措施。
我考慮的替代方案:以handlers.domain.com
所有鏈接竟然會被鏈接到www.domain.com
一個重定向腳本,將重定向到腳踩handlers.domain.com
URL加密的時間,那麼這將肯定知道它是作爲直接訪問從www.domain.com
認證重定向。 此解決方案在GET場景下工作正常,但會遇到預期POST數據的處理程序失敗(上傳大文件)
有誰知道或可以想到更好的解決方案或對我的解決方案有任何洞察?
(在這種情況下,我使用ASP.NET但解決的辦法很可能是平臺無關的,所以我會用不同的網絡平臺標籤這個)
謝謝!
我確實建立了一個會話,但只在第一個子域上。也許,現在這是一個純ASP.NET問題,我可以通過POST請求發佈sessionId,並在其他域中「加入」會話(我使用中央數據庫會話管理),但我不確定這可以是但在ASP.NET – Variant 2011-06-14 13:05:04
中完成您可能必須重寫默認會話模塊才能完成此操作,但這可能是可行的。 – jdc 2011-06-14 13:10:44
會議只是在我的回答中用作廣義術語。例如,您可以將該標誌放入數據庫,然後從另一臺服務器上的數據庫中查詢該標誌,而不管使用何種類型的「會話模塊」。只傳遞數據服務器端來驗證請求是否有效。如果您使用密碼術,您將共享密鑰服務器端。但是使用密碼學,你需要知道你在做什麼以及如果祕密密鑰被篡改或丟失了怎麼辦。通過「會話」(兩臺服務器之間的共享存儲),每個請求都會有一個「祕密」。 – hakre 2011-06-14 13:19:27