我正在尝试将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示例项目会自动显示登录/管理帐户的社交按钮:
在后端代码中,使用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身份验证?
答案 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/