ASP.Net Core SAML 身份验证

     2023-02-15     102

关键词:

【中文标题】ASP.Net Core SAML 身份验证【英文标题】:ASP.Net Core SAML authentication 【发布时间】: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 附带了几个库来实现身份验证(客户端)。

例如:

Microsoft.AspNet.Authentication.OAuth Microsoft.AspNet.Authentication.Facebook Microsoft.AspNet.Authentication.Google Microsoft.AspNet.Authentication.Twitter

实现这些只是在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 使用本地存储的用户。 【参考方案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 非常有用。

【讨论】:

您好,欢迎来到 SO!请阅读tour 和How do I write a good answer? 例如您可以使用解决问题的解决方案添加代码sn-p。

具有混合身份验证 JWT 和 SAML 的 ASP.NET Web API 2.2 OWIN

】具有混合身份验证JWT和SAML的ASP.NETWebAPI2.2OWIN【英文标题】:ASP.NETWebAPI2.2OWINwithmixedauthenticationJWTandSAML【发布时间】:2018-02-0902:04:45【问题描述】:我们有一个WebAPI需要为不同的客户端应用程序提供服务,每个应用程序都使用不... 查看详情

没有 ASP.NET 身份的 .NET Core 外部身份验证

】没有ASP.NET身份的.NETCore外部身份验证【英文标题】:.NETCoreExternalAuthenticationwithoutASP.NETIdentity【发布时间】:2018-06-1516:09:59【问题描述】:我使用自己的JWT令牌身份验证,而不是默认模板免费提供的asp.net身份。我到处寻找一些... 查看详情

Cookie 身份验证 ASP.NET Core

】Cookie身份验证ASP.NETCore【英文标题】:CookieAuthenticationASP.NETCore【发布时间】:2017-03-3012:57:27【问题描述】:我可以在ITicketStore中使用MemoryCache来存储AuthenticationTicket吗?背景:我的网络应用正在使用Cookie身份验证:app.UseCookieAuth... 查看详情

Asp Net Core 身份验证问题

】AspNetCore身份验证问题【英文标题】:AspNetCoreauthenticationtroubles【发布时间】:2020-04-0911:09:21【问题描述】:我已经用Angular制作了aspnetcoreweb应用程序。它使用基于cookie的身份验证,使用标准的网络核心身份验证机制。一切正常... 查看详情

ASP.NET Core 使用多种身份验证方法

】ASP.NETCore使用多种身份验证方法【英文标题】:ASP.NETCoreUsingMultipleAuthenticationMethods【发布时间】:2019-07-1004:17:11【问题描述】:同时使用Cookie身份验证中间件和JWT身份验证中间件。当我登录用户时,我创建自定义声明并将它们... 查看详情

ASP.NET Core JWT 身份验证更改声明(子)

】ASP.NETCoreJWT身份验证更改声明(子)【英文标题】:ASP.NETCoreJWTauthenticationchangesClaims(sub)【发布时间】:2020-10-0923:51:04【问题描述】:我有一个使用JWT身份验证的ASP.NETCoreAPI。简单设置:....stringauthority=$"https://configuration["Auth:Autho... 查看详情

Asp net core 和 Firebase 身份验证

】Aspnetcore和Firebase身份验证【英文标题】:AspnetcoreandFirebaseAuthentication【发布时间】:2021-06-1515:44:32【问题描述】:在我的aspnetcore5(api)中,我已将firebase身份验证与此中间件集成:publicvoidConfigureServices(IServiceCollectionservices)services.... 查看详情

ASP.NET Core 中的 Jwt 令牌身份验证

】ASP.NETCore中的Jwt令牌身份验证【英文标题】:JwttokenauthenticationinASP.NETCore【发布时间】:2021-12-1711:55:34【问题描述】:我正在构建一个ASP.NETCoreWeb应用程序和Angular,我想使用基于令牌的身份验证来保护它。我对身份验证机制相... 查看详情

ASP.NET Core JWT 身份验证受众属性

】ASP.NETCoreJWT身份验证受众属性【英文标题】:ASP.NETCoreJWTAuthenticationAudienceProperty【发布时间】:2021-10-2723:00:11【问题描述】:我是ASP.NETCore的新手。我正在使用JWT对Webapi进行身份验证。在大多数在线教程的JWT代码中,我们可以找... 查看详情

ASP.NET Core 身份验证 cookie 只收到一次

】ASP.NETCore身份验证cookie只收到一次【英文标题】:ASP.NETCoreauthenticationcookieonlyreceivedonce【发布时间】:2017-12-3114:15:56【问题描述】:我正在使用ASP.NETCore开发应用程序,并且正在使用自定义Cookie身份验证。我的CookieAuthenticationOpti... 查看详情

ASP.NET Core Web API 身份验证

】ASP.NETCoreWebAPI身份验证【英文标题】:ASP.NETCoreWebAPIAuthentication【发布时间】:2016-12-2222:59:17【问题描述】:我正在努力解决如何在我的网络服务中设置身份验证。该服务是使用ASP.NETCoreWebapi构建的。我的所有客户端(WPF应用程... 查看详情

ASP.NET Core 中的按操作身份验证处理程序

】ASP.NETCore中的按操作身份验证处理程序【英文标题】:PeractionauthenticationhandlersinASP.NETCore【发布时间】:2021-12-1808:28:30【问题描述】:是否可以在ASP.NETCore中拥有每个操作的身份验证处理程序?如果有怎么办?我想为一些路由设... 查看详情

ASP.NET Core 中的基本身份验证

】ASP.NETCore中的基本身份验证【英文标题】:BasicAuthenticationinASP.NETCore【发布时间】:2016-02-0916:06:02【问题描述】:问题如何在ASP.NETCoreWeb应用程序中使用自定义成员身份实现基本身份验证?备注在MVC5中,我使用了article中的说明... 查看详情

如何手动解密 ASP.NET Core 身份验证 cookie?

】如何手动解密ASP.NETCore身份验证cookie?【英文标题】:HowtomanuallydecryptanASP.NETCoreAuthenticationcookie?【发布时间】:2017-08-0803:00:14【问题描述】:让我们考虑一个众所周知的ASP.NETCore场景。首先我们添加中间件:publicvoidConfigure(IAppli... 查看详情

ASP.NET Core 2.0 身份验证中间件

】ASP.NETCore2.0身份验证中间件【英文标题】:ASP.NETCore2.0authenticationmiddleware【发布时间】:2018-01-3000:26:44【问题描述】:Core1.1遵循@blowdart的建议并实现了自定义中间件:https://***.com/a/31465227/29821它是这样工作的:中间件已运行。... 查看详情

具有自定义身份验证类型的 ASP.NET Core JWT

】具有自定义身份验证类型的ASP.NETCoreJWT【英文标题】:ASP.NETCoreJWTwithCustomAuthenticationType【发布时间】:2020-11-0404:23:37【问题描述】:有没有办法为HTTPAuthorization标头配置身份验证类型?例如:“Token”而不是“Bearer”?考虑以下... 查看详情

ASP NET API - 在不打开 Microsoft 登录页面的情况下使用 Azure AD SAML 协议对用户进行身份验证

...开Microsoft登录页面的情况下使用AzureADSAML协议对用户进行身份验证【英文标题】:ASPNETAPI-AuthenticateusersusingAzureADSAMLProtocolwithoutopenMicrosoftLoginPage【发布时间】:2020-10-0720:01:46【问题描述】:这是我第一次使用AzureAD和SAML协议,我想... 查看详情

没有身份的 ASP.NET Core 2.0 承载身份验证

】没有身份的ASP.NETCore2.0承载身份验证【英文标题】:ASP.NETCore2.0BearerAuthwithoutIdentity【发布时间】:2018-01-2416:55:17【问题描述】:当我一天前开始在.NETcore2.0上实现一个独立的承载身份验证webapi时,我以为我有一个非常简单的目... 查看详情