web-dev-qa-db-fra.com

Authentification ASP.Net Core SAML

J'essaie d'ajouter l'authentification SAML 2.0 à une solution ASP.Net Core. Je ne trouve aucune documentation sur le sujet, donc je ne sais pas par où commencer. Il y a probablement de la documentation, mais je ne veux pas passer 3 jours à devenir un expert en la matière.

D'après ce que je peux voir, ASP.Net Core a changé quelque chose par rapport aux anciens assemblys/espaces de noms OWIN. Il existe des bibliothèques tierces pour simplifier l'implémentation de SAML 2.0 telles que Kentor.AuthServices .

Je ne sais pas comment combiner cela avec ASP.Net 5 RC 1/ASP.Net Core. Par exemple, utiliser les tables AspNet * dans SQL.

ASP.Net 5 RC 1 est fourni avec plusieurs bibliothèques pour implémenter l'authentification (client).

Par exemple:

Leur implémentation consiste à appeler une méthode d'extension simple dans Startup.cs:

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

Une fois cela fait, l'exemple de projet ASP.Net affiche automatiquement les boutons sociaux pour la connexion/gestion du compte:

Social buttons

Dans le code backend, les fournisseurs d'authentification sont récupérés à l'aide de var otherLogins = _signInManager.GetExternalAuthenticationSchemes().Where(auth => userLogins.All(ul => auth.AuthenticationScheme != ul.LoginProvider)).ToList();. Cela signifie que les fournisseurs d'authentification sont enregistrés quelque part qui les rend disponibles en appelant _signInManager.GetExternalAuthenticationSchemes().

Comment puis-je implémenter l'authentification SAML 2.0 dans ASP.Net 5 RC1/ASP.Net Core?

23
Tedd Hansen

Pour autant que je sache, il n'y a pas d'implémentation SAML2 pour ASP.NET Core. Je prévois de créer un middleware ASP.NET Core pour Kentor.AuthServices (je suis le responsable), mais ce n'est que des plans pour le moment.

Il existe maintenant un prototype fonctionnel d'un middleware ASP.NET Core sur https://github.com/KentorIT/authservices/pull/489 . Il sera inclus dans la version officielle lorsque des tests auront été ajoutés.

Il est également important de savoir que même si un tel middleware serait compatible avec le modèle de sécurité ASP.NET Core, il ne fonctionnerait que sur le .NET Framework complet et non sur .NET Core. La raison en est que SignedXml et la prise en charge SAML2 dans System.IdentityModel ne sont pas encore disponibles dans .NET Core.

10
Anders Abel

Il s'agit probablement d'une version mise à jour de la réponse d'Anders Abel, mais:

J'ai utilisé https://github.com/Sustainsys/Saml2 . Ils ont un paquet nuget avec 36k téléchargements appelé "Sustainsys.Saml2.AspNetCore2".

Ils ont un exemple d'application .net core utile qui utilise également l'identité .net core ici: https://github.com/Sustainsys/Saml2/tree/master/Samples/SampleAspNetCore2ApplicationNETFramework (jetez un œil à leur startup.cs et aussi leurs pages de rasoir de connexion externes pour les détails d'implémentation).

Ils hébergent également un joli IdP de test ici: https://stubidp.sustainsys.com . De cette façon, vous pouvez confirmer que le point de terminaison ACS (Assertion Consumer Service) de votre application fonctionne avec votre page de connexion et ainsi de suite.

Ils mentionnent sur leur github: "La bibliothèque s'appelait auparavant Kentor.AuthServices."

0
JohnnyFun