我在制作符合 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(..)。