4

Wie integriere ich eine vorhandene asp.net MVC-Anwendung mit einer separaten IdentityServer-Anwendung?Wie integriere ich eine bestehende asp.net MVC-Anwendung mit IdentityServer?

Ich habe eine bestehende asp.net MVC-Site mit Identität 2.0 für die Authentifizierung.

Ich habe jetzt eine zweite Anwendung mit asp.net Core 1.1, die APIs dient, die mit einem Client (mobile) Anwendung sprechen.

Ich muss die Authentifizierung über alle 3 Anwendungen teilen.

Von dem, was ich gelesen habe, muss ich SSO hinzufügen, und IdentityServer scheint eine gute Lösung dafür zu sein. Ich plane, IdentityServer als eine vierte Anwendung einzurichten und es mit der neuen .net API-Anwendung und Clientanwendung zu verbinden.

Ich kann jedoch kein Beispiel dafür finden, wie meine vorhandene Asp.net-Anwendung den neuen Identitätsserver für die Authentifizierung verwenden kann.

+0

Sie sagen, Sie verwenden Identität 2.0 für die Authentifizierung der asp.net MVC App. Ist es ein externer Identitätsanbieter wie Google? Möchten Sie es nach dem Wechsel zu Identity Server 4 behalten? – Ignas

+0

Nein, die gesamte Authentifizierung ist intern, es gibt keine externen Anbieter. Ich muss es nach dem Umschalten nicht weiter verwenden –

Antwort

1

Sie haben 4-Anwendungen sind Sie angegeben.

  1. Die IdentityServer4-Anwendung für Identitäts- und Zugriffskontrolle. Dies wird der SSO-Dienst und der STS (Security Token Service) - die Behörde sein. Ab heute werden Sie dies in ASP.NET Core 1.1 erstellen. Um ein SSO zu sein, benötigen Sie natürlich eine Benutzerdatenbank. Die Verwendung von ASP.NET Identity funktioniert gut und integriert sich gut mit IdentityServer.

  2. Ihre Web-API, von der Sie sagen, dass ASP.NET Core 1.1 ausgeführt wird. Dies wird in OAuth-Begriffen als API-Ressource bezeichnet. Sie könnten diese API in separat zu sichernde Abschnitte unterteilen, die API Scopes genannt werden.

  3. Die vorhandene MVC-Webanwendung mit Ihrer aktuellen Benutzerdatenbank in ASP.NET Identity. Dies ist ein Client der IdentityServer-Autorität (Nummer 1 oben). Sie könnten den Autorisierungscode-Fluss verwenden (sicherer) oder sich für einen impliziten oder hybriden Fluss entscheiden. Ein Beispiel für die Einrichtung einer ASP.NET MVC-Webanwendung als Client einer IdentityServer-Instanz finden Sie in der offiziellen Dokumentation: http://docs.identityserver.io/en/latest/quickstarts/3_interactive_login.html#creating-an-mvc-client.

Im Wesentlichen Sie

(a) registrieren Sie den Client mit IdentityServer, dann

(b) einige Startup-Code in der Client-Anwendung hinzufügen, es wird sagen IdentityServer für Authentifizierung- etwas zu verwenden, so ...

app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions 
{ 
    AuthenticationScheme = "oidc", 
    SignInScheme = "Cookies", 

    Authority = "http://localhost:5000", 
    RequireHttpsMetadata = false, 

    ClientId = "mvc", 
    SaveTokens = true 
}); 

Sie an dieser Stelle verwenden könnte sowohl die interne Benutzerdatenbank in sowie der externen IdentityServer- für die Anmeldung, das ist, könnten Sie i log n der MVC Web App zwei verschiedene Möglichkeiten. Die IdentityServer-App könnte als "externer Anbieter" für Ihre MVC-Webanwendung betrachtet werden.

Möchten Sie Ihre vorhandenen Benutzernamen und Kennwörter (und Rollen usw.) auf die neue IdentityServer-Instanz/-Datenbank migrieren? Diese Antwort muss "Ja" sein, um SSO und gemeinsame Identitäten und Zugriffssteuerungen über Anwendungen hinweg zu erreichen.

SSO ist nur möglich, wenn sich der Benutzer mit der IdentityServer App anmeldet. Sie werden SSO wahrscheinlich nicht wirklich erreichen, da sie einen Browser auf einem Desktop-Computer und eine mobile App auf einem Telefon verwenden. Cookies oder Tokens können nicht wirklich auf allen Geräten gemeinsam genutzt werden.

  1. Der mobile Client. Dies wäre ein anderer Client wie die MVC Web App, außer dass der Implizite Fluss sicher verwendet wird. Registrieren Sie den Client erneut und codieren Sie dann die App.
2

Sie erstellen Ihre Authentifizierungsanwendung mithilfe von IdentityServer4. Behandle jede deiner Anwendungen als identityServer4-Client und API als ApiResources, so dass sie alle clientid, callback uri usw. haben. Du musst IdentityServerAuthenticationOptions zu API und OpenIdConnectOptions zu mvc-Anwendung hinzufügen.

Zum Beispiel ein WebAPI startup.cs haben:

public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) 
{ 
    loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
    loggerFactory.AddDebug(); 

    app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions 
    { 
     Authority = "http://localhost:5000", 
     RequireHttpsMetadata = false, 

     ApiName = "api1" 
    }); 

    app.UseMvc(); 
} 

Wie dem auch sei, Sie müssen zunächst verstehen, wie IdentityServer funktioniert. Und dann müssen Sie die Identityserver-App erstellen, die auf den Benutzerkontext zugreift. Sie erhalten die Freigabe-Authentifizierung über drei App, indem Sie die gleiche api scope zulassen.

Und this is the best place to start

Verwandte Themen