ASP.Net核心SAML身份验证

Ted*_*sen 25 saml-2.0 asp.net-core

我正在尝试将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"
});
Run Code Online (Sandbox Code Playgroud)

完成后,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身份验证?

And*_*bel 10

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

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

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

  • @Anders Abel是否有任何已知的中间件在asp.net核心中实现SAML2 SSO? (2认同)

Joh*_*Fun 7

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

我使用了https://github.com/Sustainsys/Saml2。他们有一个名为“Sustainsys.Saml2.AspNetCore2”的 nuget 包,下载量为 36k。

他们有一个有用的示例 .net 核心应用程序使用它也使用 .net 核心身份在这里:https : //github.com/Sustainsys/Saml2/tree/master/Samples/SampleAspNetCore2ApplicationNETFramework(看看他们startup.cs和他们的外部登录有关实施细节的剃刀页面)。

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

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