1

我有一些使用.NET Membership和Forms Authentication的遺留.NET Framework Web應用程序。他們每個人都有他們自己的登錄頁面,但他們都在同一個域(例如.mycompany.com)上,共享一個ASP.NET成員資格數據庫並共享一個機器密鑰,以便他們能夠識別彼此的Cookie以實現SSO;即如果您登錄到一個應用程序,那麼您將登錄到它們中,與登出相同。如何使用Identity Server實現SSO?

現在我想要在.NET Core中開發所有未來的應用程序,並使用通用的Identity Server作爲集中式身份驗證機制。我有一個簡單的Identity Server啓動並運行,以及一些不同風格的.NET Core客戶端應用程序。所有這些都很好。我似乎無法克服的障礙是所有mycompany.com應用程序中的SSO。布羅克艾倫建議here,我看看客戶樣本的靈感。

MVC OWIN客戶端(隱式)樣本讓我獲得大部分途徑。我能夠移植我的舊版應用程序以使用OWIN Cookie身份驗證和OIDC,但這不是真正的SSO。目前,如果我登錄到app1.thirdparty.com,那麼我將被重定向到identityserver.mycompany.com以進行身份​​驗證。登錄到identityserver.mycompany.com後,我可以訪問app1.thirdparty.com,這非常棒,但我也必須爲每個mycompany.com應用程序執行相同的過程。當然,我不必每次都輸入我的憑證,因爲我已經與identityserver.mycompany.com建立了一個會話,但我仍然需要到每個應用程序並在我正式登錄之前單擊登錄按鈕。更喜歡登錄到identityserver.mycompany.com啓動與mycompany.com域中的所有其他應用程序的SSO。同樣,如果我已經登錄到mycompany.com應用程序,那麼我希望identityserver.mycompany.com知道這一點,並且不要求我再次輸入我的憑證。

這可能嗎?我會怎麼做呢?

回答

2

This article恰好具有我正在尋找的信息。 Microsoft.Owin.Security.Interop提供了所需的墊片以使其發揮作用。