你將有4個應用程序,你說。
身份和訪問控制的IdentityServer4應用程序。這將是SSO服務和STS(安全令牌服務) - 權限。截至今天,您將在ASP.NET核心1.1中構建它。要成爲SSO,您當然需要擁有一個用戶數據庫;使用ASP.NET Identity效果很好,並與IdentityServer很好地集成。
您的Web API,您說的是運行ASP.NET Core 1.1。以OAuth的形式,這被稱爲API資源。你可以把這個API分成幾個單獨的安全部分,稱爲API範圍。
現有的MVC Web應用程序與ASP.NET身份中的當前用戶數據庫。這將是IdentityServer權限(上面的#1)的客戶端。您可以使用授權碼流(更安全)或選擇隱式或混合流。有關如何將ASP.NET MVC Web應用程序設置爲IdentityServer實例的客戶端的示例,請參閱其官方文檔:http://docs.identityserver.io/en/latest/quickstarts/3_interactive_login.html#creating-an-mvc-client。
從本質上講,你
(一)註冊IdentityServer客戶端,然後
(b)增加在客戶端應用程序的啓動代碼會告訴它使用IdentityServer的認證 - 東西像這樣...
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
AuthenticationScheme = "oidc",
SignInScheme = "Cookies",
Authority = "http://localhost:5000",
RequireHttpsMetadata = false,
ClientId = "mvc",
SaveTokens = true
});
你可以在這一點上都使用在記錄,以及作爲外部IdentityServer-內部用戶數據庫,您可以登錄我n以MVC Web應用程序兩種不同的方式。 IdentityServer應用程序可以被視爲您的MVC網絡應用程序的「外部提供者」。
您打算將現有的用戶名和密碼(以及角色等)遷移到新的IdentityServer實例/數據庫嗎?這個答案必須是「是」才能實現跨應用程序的SSO和共享身份和訪問控制。
SSO只有在用戶使用IdentityServer應用程序登錄時纔有可能。雖然,您可能實際上不會實現SSO,因爲他們在桌面計算機上使用瀏覽器,在手機上使用移動應用程序,但實際上無法跨設備共享Cookie或令牌。
- 移動客戶端。這將是MVC網絡應用程序之外的另一個客戶端,除非明確使用隱式流。再次註冊客戶端,然後編寫應用程序代碼。
你說你使用身份2.0認證的asp.net MVC應用程序。它是像Google這樣的外部身份提供者嗎?您想在切換到Identity Server 4後保留它嗎? – Ignas
不,所有的認證都是內部的,沒有外部提供者。切換後我不需要繼續使用它 –