oauth-2.0 - IdentityServer4 与 Sustainsys.Saml2 进行 OAuth SAML 断言
问题描述
我在制作符合 RFC-7522 的样本时遇到问题。我拥有的是IdentityServer4 (v2.2.0)作为 oAuth授权服务器(.NET Core 2.0,控制台应用程序)和不同的 SAML2 IdP。现在我想使用 Saml Assertion 来验证用户。
作为灵感,我使用了这个视频,其中 Brock Allen 和 Dominick Baier 描述了如何设置 SAML2 处理程序。
但可悲的是,我一开始就被困在我只想将该片段粘贴到我的代码中,并且每次我最终都会遇到不同的编译错误(取决于我使用的nuget)。不幸的是,我没有解决它们的运气。
片段:
//IServiceCollection services
services.AddAuthentication().AddSaml2(options =>
{
options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
options.SPOptions.EntityId = new Saml2NameIdentifier(samlIdentityUrl);
var idp = new IdentityProvider(new EntityId(samlMetadataUrl), options.SPOptions)
{
SingleSignOnServiceUrl = new Uri(samlSignOnUrl),
Binding = Saml2BindingType.HttpRedirect
};
idp.SigningKeys.AddConfiguredKey(new X509Certificate2(certificate));
options.IdentityProviders.Add(idp);
});
常见的Nuget:
- IdentityModel.Unofficial (2.8.1)
- 身份服务器4 (2.2.0)
- Microsoft.AspNetCore.All (2.0.3)
- Microsoft.IdentityModel.Tokens.Saml (5.2.4)
- Sustainsys.Saml2.AspNetCore2(见下文)
场景 #1:Sustainsys.Saml2.AspNetCore2 (0.24.0)
包“Sustainsys.Saml2.AspNetCore2 0.24.0”是使用“.NetFramework, Version=v4.6.1”恢复的。本期和本期提到的内容。最重要的是,我几乎没有编译错误,可能会中断为“类型'EntityId'和'SecurityKeyIdentifierClause'是在未引用的程序集中定义的。”
场景 #2:Sustainsys.Saml2.AspNetCore2 (2.0.0-preview01)
缺少整个 Sustainsys 命名空间,它被 Kentor.AuthServices 替换。未找到参考 .AddSaml2(..)。
解决方案
很好,我能够通过将nugets 和导入更新到以下状态来解决我的问题:
核桃:
- 身份服务器4 (2.2.0)
- Microsoft.AspNetCore.All (2.0.3)
- Microsoft.IdentityModel.Token.Saml (5.2.4.)
- Sustainsys.Saml2 (2.0.0-preview01)
- Sustainsys.Saml2.AspNetCore2 (2.0.0-preview01)
进口:
using Microsoft.IdentityModel.Tokens.Saml2;
using Kentor.AuthServices;
using Kentor.AuthServices.Metadata;
using Kentor.AuthServices.WebSso;
推荐阅读
- javascript - 是否有可能获得平板电脑的分辨率
- report - 以与数据带不同的方面显示数组
- html - 将 Ul 置于页脚中心
- angular - 分页在 mat-paginator (Angular 7) 中的第一次加载时不起作用
- c++ - 如何修复 eigen3 中的“非类型模板参数不是常量表达式”?
- c# - 在 ASP.NET Core MVC 3.0 中找不到嵌入式 cshtml
- json - 如何在颤动中解析二维列表的json
- javascript - 在 react.js 中传递属性/添加到收藏夹
- python - 使用 LineStrings 将 CSV 转换为 Geojson
- postgresql - 如何修改 EF-Core Database-First (PostgreSQL) 项目以同时使用 SQLite 和 Xamarin.Forms