webentwicklung-frage-antwort-db.com.de

ASP.Net Core SAML-Authentifizierung

Ich versuche, einer ASP.Net Core-Lösung die SAML 2.0-Authentifizierung hinzuzufügen. Ich kann keine Dokumentation zu diesem Thema finden, daher bin ich mir nicht sicher, wo ich anfangen soll. Es gibt wahrscheinlich Unterlagen, aber ich möchte nicht drei Tage damit verbringen, Experte zu werden.

Soweit ich sehen kann, hat ASP.Net Core etwas an den alten OWIN-Assemblys/Namespaces geändert. Es gibt Bibliotheken von Drittanbietern, die die SAML 2.0-Implementierung vereinfachen, z. B. Kentor.AuthServices .

Ich bin nicht sicher, wie ich dies mit ASP.Net 5 RC 1/ASP.Net Core kombinieren soll. Verwenden Sie beispielsweise die AspNet * -Tabellen in SQL.

ASP.Net 5 RC 1 enthält mehrere Bibliotheken zur Implementierung der Authentifizierung (Client).

Beispielsweise:

Um dies zu implementieren, müssen Sie eine einfache Erweiterungsmethode in Startup.cs Aufrufen:

app.UseIdentity()
.UseFacebookAuthentication(new FacebookOptions
{
    AppId = "ID",
    AppSecret = "KEY"
})
.UseGoogleAuthentication(new GoogleOptions
{
    ClientId = "ID",
    ClientSecret = "SECRET"
})
.UseTwitterAuthentication(new TwitterOptions
{
    ConsumerKey = "KEY",
    ConsumerSecret = "SECRET"
});

Sobald dies erledigt ist, zeigt das ASP.Net-Beispielprojekt automatisch soziale Schaltflächen für die Anmeldung/Verwaltung des Kontos an:

Social buttons

Im Backend-Code werden die Authentifizierungsanbieter mit var otherLogins = _signInManager.GetExternalAuthenticationSchemes().Where(auth => userLogins.All(ul => auth.AuthenticationScheme != ul.LoginProvider)).ToList(); abgerufen. Dies bedeutet, dass die Authentifizierungsanbieter an einem Ort registriert sind, der sie durch Aufrufen von _signInManager.GetExternalAuthenticationSchemes() verfügbar macht.

Wie kann ich die SAML 2.0-Authentifizierung in ASP.Net 5 RC1/ASP.Net Core implementieren?

23
Tedd Hansen

Soweit ich weiß, gibt es keine SAML2-Implementierung für ASP.NET Core. Ich plane eine ASP.NET Core Middleware für Kentor.AuthServices (ich bin der Betreuer), aber es ist noch nicht alles geplant.

Es gibt jetzt einen funktionierenden Prototyp einer ASP.NET Core-Middleware unter https://github.com/KentorIT/authservices/pull/489 . Es wird in die offizielle Version aufgenommen, wenn Tests hinzugefügt wurden.

Es ist auch wichtig zu wissen, dass eine solche Middleware zwar mit dem ASP.NET Core-Sicherheitsmodell kompatibel ist, jedoch nur mit dem vollständigen .NET Framework und nicht mit .NET Core ausgeführt werden kann. Der Grund dafür ist, dass SignedXml und die SAML2-Unterstützung in System.IdentityModel in .NET Core noch nicht verfügbar sind.

10
Anders Abel

Dies ist wahrscheinlich im Grunde eine aktualisierte Version von Anders Abels Antwort, aber:

Ich habe https://github.com/Sustainsys/Saml2 verwendet. Sie haben ein Nuget-Paket mit 36.000 Downloads namens "Sustainsys.Saml2.AspNetCore2".

Sie haben ein hilfreiches Beispiel für eine .net-Core-App, die ebenfalls die .net-Core-Identität verwendet: https://github.com/Sustainsys/Saml2/tree/master/Samples/SampleAspNetCore2ApplicationNETFramework (werfen Sie einen Blick darauf bei ihren startup.cs und auch deren externe Anmeldeseiten für Implementierungsdetails).

Sie hosten auch einen Nizza Test IdP hier: https://stubidp.sustainsys.com . Auf diese Weise können Sie sicherstellen, dass der ACS-Endpunkt (Assertion Consumer Service) Ihrer App zusammen mit Ihrer Anmeldeseite und so weiter funktioniert.

Sie erwähnen auf ihrem Github: "Die Bibliothek hieß früher Kentor.AuthServices."

0
JohnnyFun