7

我們有一個服務器可以讓5-10個內部ASP.NET(MVC)應用程序作爲單獨的網站(位於不同的端口和/或子域)在單獨的應用程序池中運行。我對內置的ASP.NET身份驗證框架一無所知,所以我想知道是否有人可以給我一個正確的方向快速指針...ASP.NET身份驗證 - 一個用於多個應用程序的登錄系統

我想通過一個登錄機制來保護所有內部應用程序(支持3-5個不同的角色;沒有什麼複雜的)。這個登錄系統將是服務器上運行的另一個應用程序/網站,並且要訪問任何其他應用程序,必須通過一個登錄系統進行身份驗證,目標應用程序必須能夠看到用戶的角色。內部應用程序將在代碼級別修改以插入此新登錄系統(換句話說,我們將修改當前的應用程序以支持身份驗證)。

這就是我不希望每個應用程序都擁有自己的登錄/身份驗證機制,而是使用更「全局」的身份驗證系統(同一服務器上的所有內容)。我並沒有尋找任何複雜的東西(只有一個由15-25名員工組成的公司,3-5個部門 - 每個用戶必須根據他們的登錄信息與部門(角色)相關聯),並且每個應用都會被調整以向用戶顯示適當的基於他的角色的數據)。

問題是 - 我如何使用戶的身份驗證狀態在所有不同的應用程序中(在不同的程序集中並單獨運行)都可見?

我需要使用Forms身份驗證嗎?或者在Spring.NET中的東西?

回答

4

單一登錄在子域或二級域內相對容易實現。 ASP.NET窗體身份驗證是一種基於票證的系統,票據以Cookie加密存儲。你必須達到的是讓你的網絡應用程序共享一個這個cookie。

對於子域場景(例如mysite.com/app1,mysite.com/app2),只需將encryption/decryption鍵設置爲machinekey設置中的web.config文件即可。

對於二級域名場景(例如app1.mysite.com,app2.mysite.com),除了上述之外,您需要進行一些代碼更改以強制所有身份驗證Cookie使用相同的頂級域(例如mysite.com)。

+0

我遵循你的指示。它不起作用。當我點擊鏈接從app1.mydomain.com導航到app2.mydomain.com時,它會重定向到登錄。 – uikrosoft 2015-11-16 10:12:00

+0

在我的本地,即使沒有相同的密鑰,它也可以很好地工作。 – uikrosoft 2015-11-16 10:12:53

1

如果您的公司在Windows上運行,並且您在內部獲得Active Directory設置(Active Directory域服務),則可以將所有ASP.NET站點設置爲使用集成Windows身份驗證。這是非常容易設置和Intranet網站非常普遍。訪問您的內部網站的用戶會自動通過其Windows身份驗證,這意味着無需輸入用戶名&密碼登錄表單。在這裏閱讀所有內容:http://www.asp.net/mvc/tutorials/authenticating-users-with-windows-authentication-cs

相關問題