I am trying to add SAML 2.0 authentication to an ASP.Net Core solution. I can't find any documentation on the subject, so I am unsure where to start. There is probably documentation out there, but I don't want to spend 3 days becoming an expert on this.
From what I can see ASP.Net Core has changed something from the old OWIN assemblies/namespaces. There are third party libraries to simplify SAML 2.0 implementation such as Kentor.AuthServices.
I am unsure how to combine this with ASP.Net 5 RC 1 / ASP.Net Core. For example making use of the AspNet* tables in SQL.
ASP.Net 5 RC 1 comes with several libraries to implement authentication (client).
For example:
- Microsoft.AspNet.Authentication.OAuth
- Microsoft.AspNet.Authentication.Facebook
- Microsoft.AspNet.Authentication.Google
- Microsoft.AspNet.Authentication.Twitter
Implementing these is a matter of calling a simple extension method in 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"
});
Once that is done the ASP.Net sample project automatically shows social buttons for login/manage account:
In the backend code the authentication providers are retrieved using var otherLogins = _signInManager.GetExternalAuthenticationSchemes().Where(auth => userLogins.All(ul => auth.AuthenticationScheme != ul.LoginProvider)).ToList();
. This means the authentication providers are registered somewhere that makes them available by calling _signInManager.GetExternalAuthenticationSchemes()
.
How can I implement SAML 2.0 authentication in ASP.Net 5 RC1 / ASP.Net Core?