2010-06-14 53 views
0

好奇人們有什麼建議。如何消除從asp.net窗體應用程序調用的MVC應用程序的身份驗證

我有一個現有的asp.net窗體應用程序,它執行窗體身份驗證並打開標識模擬器。

該應用程序有一個調查問卷的鏈接,我想單獨在asp.net MVC應用程序中開發,但我不希望用戶點擊鏈接並提示輸入用戶名和密碼,我希望他們能夠無縫地開始填寫問卷。

有沒有辦法將身份驗證從一個.net應用程序轉移到另一個?我希望能夠傳遞像UserRole這樣的東西。

這樣做的最好方法是什麼?

回答

1

如果使用相同的machineKey在這兩個應用程序和MVC應用程序是在同一臺服務器上,我認爲它會重複使用身份驗證Cookie,並簡單地認爲他們登錄。請參閱本MSDN article上配置的machineKey,尤其是部分在sharing authentication tickets across applications。請注意,這是假定兩個應用程序都在同一臺服務器上。如果他們位於不同的服務器上,那麼您需要調查其他一些機制 - 比如說爲該URL生成一次性票據,遠程系統可以通過網絡電話向用戶所在的始發服務器使用該票據。它可能不需要全面實施central authentication system,而是遵循這些原則。只要確保您使用SSL來加密相關位以幫助避免中間人攻擊。

+0

感謝tvanfosson,知道這一點我可以輕鬆地推動MVC應用程序在同一臺服務器上,這應該不成問題。我讀過你建議的文章,應該可以正常工作。一點點的工作,但是一旦我產生了兩個密鑰就應該完成這項工作。 – 2010-06-15 03:57:43

1

使用Windows Identity Foundation(WIF)可以實現單點登錄。

在WIF中,一種名爲安全令牌服務(STS)的服務會發出一個帶有聲明的令牌,它可以是任何想要聲明經過驗證的用戶的任何聲明,例如他的角色。在您的應用程序中,您可以使用Page.User,Controller.Page或Thread.Current.Principal屬性來檢查用戶聲明(但如果僅使用角色聲明,則可以使用IsInRole方法以簡化操作)。

您可以使用WIF SDK中包含的VS工具輕鬆創建STS。表單身份驗證將在STS中完成,而不是在Web Forms網站中完成,兩個站點都應與STS建立信任關係。

+0

謝謝Anero,我會檢查STS。 – 2010-06-15 03:56:09

相關問題