【问题标题】:ASP.Net Core SAML authenticationASP.Net Core SAML 身份验证
【发布时间】:2016-05-19 11:00:33
【问题描述】:

我正在尝试将 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 身份验证?

【问题讨论】:

  • 看看github.com/IdentityServer/IdentityServer4。没有 SAML,但可能有一些线索?
  • 您是否设法将 SAML2 实施到您的 aspnet 核心应用程序中?如果你这样做,我会喜欢一个例子......
  • 不,抱歉。跳过实施它并找到了另一个解决方案。
  • 能否请您至少告诉我们解决方案名称
  • 我最终使用 ASP.Net Identity 使用本地存储的用户。

标签: asp.net-core saml-2.0


【解决方案1】:

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

现在https://github.com/KentorIT/authservices/pull/489 有一个 ASP.NET Core 中间件的工作原型。添加测试后,它将包含在正式版本中。

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

【讨论】:

  • 关于使 Kentor.AuthServices 支持 ASP.Net Core 的任何 ETA 吗?
  • @TeddHansen 不幸的是,不能按时说什么。很大程度上取决于我是否会在空闲时间做这件事,或者我是否有付费客户以便我可以在办公时间做。
  • @Anders Abel 是否有任何已知的中间件可以在 asp.net 核心中实现 SAML2 SSO??
  • @Manu ComponentSpace 做到了。但是关于更精细细节的文档有点缺乏,而且它是一种付费产品。
  • 从 Ander 的版本中获得了最新版本,它对 .Net Framework 有很强的依赖性。与纯核心环境不兼容。 :(
【解决方案2】:

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/

【讨论】:

    【解决方案3】:

    这可能基本上是安德斯·阿贝尔答案的更新版本,但是:

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

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

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

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

    【讨论】:

      【解决方案4】:

      对于 ASP.NET 核心站点,您可以尝试这个SSO connector 解决方案。我将此连接器安装为一个单独的 .NET 应用程序(代理应用程序),该应用程序正在处理我的 ASP.NET 核心应用程序的 SSO 请求,然后我使用一些代码将此连接器与我的应用程序集成。所有必需的集成代码都已经存在于连接器本身中,我只是将其复制并粘贴到我的应用程序中。添加 SSO 的设置非常简单。我认为这个连接器对于在 ASP.NET 核心应用程序中添加 SSO 非常有用。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-30
      • 2018-06-25
      • 2018-05-13
      • 2017-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      相关资源
      最近更新 更多