ASP.Net核心SAML身份验证

时间:2016-02-09 12:42:10

标签: asp.net-core saml-2.0

我正在尝试将SAML 2.0身份验证添加到ASP.Net Core解决方案中。我找不到关于这个问题的任何文件,所以我不确定从哪里开始。可能有文档,但我不想花3天时间成为这方面的专家。

从我所看到的,ASP.Net Core已经从旧的OWIN程序集/命名空间改变了一些东西。有第三方库可以简化SAML 2.0的实现,例如Kentor.AuthServices

我不确定如何将其与ASP.Net 5 RC 1 / ASP.Net Core结合使用。例如,在SQL中使用AspNet *表。

ASP.Net 5 RC 1附带了几个库来实现身份验证(客户端)。

例如:

实现这些是在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"
});

完成后,ASP.Net示例项目会自动显示登录/管理帐户的社交按钮:

Social buttons

在后端代码中,使用var otherLogins = _signInManager.GetExternalAuthenticationSchemes().Where(auth => userLogins.All(ul => auth.AuthenticationScheme != ul.LoginProvider)).ToList();检索身份验证提供程序。这意味着身份验证提供程序已在某个位置注册,通过调用_signInManager.GetExternalAuthenticationSchemes()来使其可用。

如何在ASP.Net 5 RC1 / ASP.Net Core中实现SAML 2.0身份验证?

3 个答案:

答案 0 :(得分:9)

据我所知,ASP.NET Core没有SAML2实现。我计划为Kentor.AuthServices(我是维护者)制作一个ASP.NET核心中间件,但它只是计划。

现在在https://github.com/KentorIT/authservices/pull/489处有一个ASP.NET核心中间件的工作原型。它将在添加测试时包含在官方发布中。

同样重要的是要知道,虽然这样的中间件与ASP.NET核心安全模型兼容,但它只能在完整的.NET Framework上运行,而不能在.NET Core上运行。原因是在.NET Core中尚未提供SignedXml和System.IdentityModel中的SAML2支持。

答案 1 :(得分:0)

这可能基本上是Anders Abel答案的更新版本,但是:

我使用了https://github.com/Sustainsys/Saml2。他们有一个nuget程序包,下载了36,000个文件,名为“ Sustainsys.Saml2.AspNetCore2”。

他们有一个有用的.net核心应用程序示例,在其中使用了.net核心标识:https://github.com/Sustainsys/Saml2/tree/master/Samples/SampleAspNetCore2ApplicationNETFramework(请查看其startup.cs以及其外部登录剃刀页面以获取实现细节)

他们还在这里托管了一个不错的测试IdP:https://stubidp.sustainsys.com。这样,您可以确认应用程序的ACS(断言消费者服务)端点与您的登录页面一起工作,而不是正常工作。

他们在自己的github上提到:“该库以前名为Kentor.AuthServices。”

答案 2 :(得分:-1)

ITfoxtec Identity Saml2现在支持.NET Core 2.1。

项目:https://itfoxtec.com/IdentitySaml2和代码示例:https://github.com/ITfoxtec/ITfoxtec.Identity.Saml2/tree/master/test

要在ASP.NET MVC Core 2.1项目中实现SAML 2.0,您需要以下NuGet程序包:https://www.nuget.org/packages/ITfoxtec.Identity.Saml2.MvcCore/