想知道這裏最好的辦法不會有其中第一個應用程序使用Windows身份驗證兩個應用程序並只包括一個鉤在HTTP管道PostAuthenticate事件。如果用戶已通過身份驗證,則會爲他們提供表單工單並重定向到使用表單身份驗證的目標應用程序App2。您必須小心,Cookie不是路徑特定的,並且兩個應用程序駐留在同一臺服務器上(或者加密密鑰在web.config中同步)。如果用戶未通過身份驗證,則只需重定向他們,而不需要身份驗證票,並在到達App2時登錄。
應用1:www.myUrl.com \ MyApp的
這是該應用的 「公共」 的網址,並通過掛鉤到PostAuthenticate事件檢測網絡用戶(見Professional ASP.NET 2.0 Security, Membership, and Role Management):
//Hook PostAuthenticateRequest inside of global.asax
void Application_PostAuthenticateRequest(Object sender, EventArgs e)
{
IPrincipal p = HttpContext.Current.User;
if (p.Identity.IsAuthenticated)
{
// to do: give them a non-path specific ticket and redirect to App2
}
}
App2:www.myUrl.com \ MyApp2
這是實際應用。當網絡用戶從App1到達時,他們已經有表格票。當非網絡用戶到達時,他們將被重定向到login.aspx。
備註: 如果網絡用戶爲App2書籤,其中一個缺點是。我不太清楚我將如何解決這個問題。如果他們有一個沒有過期的cookie,那麼沒關係。一種選擇是在登錄頁面上添加一個鏈接,說明「我已經是網絡用戶 - 自動登錄我」,它將鏈接回App1,他們將在那裏登錄?
我有一些代碼來協助發佈表格票。我會隨時更新答案。
請注意,你將不得不做一些花哨的角色管理步法的應用2來處理不同的角色提供。上面的亞馬遜參考文獻是舊的,但是當我遇到這些自定義的認證和授權問題時,我發現自己經常引用它。
你打算如何模擬用戶使用表單登錄?你打算在ASP會員表中爲他們創建用戶嗎? – Erix
是的。每個Windows用戶都將擁有對應於asp成員資格中的用戶的角色(Windows中的組)。因此,如果他們在Windows中的管理員組中,他們將以管理員用戶身份登錄到Forms中。對於Windows用戶,只有與ASP成員表中的用戶一樣多的角色,每個角色都有一對一的關係(用戶到角色)。 –