带有 Sustainsys.Saml2 的 IdentityServer4 使 OAuth SAML 断言

IdentityServer4 with Sustainsys.Saml2 to make OAuth SAML Assertion

我在制作符合 RFC-7522 的示例时遇到问题。我拥有的是 IdentityServer4 (v2.2.0) as oAuth Authorization Server (.NET Core 2.0, Console Application) 和不同的 SAML2 IdP。现在我想使用 Saml Assertion 来验证用户。

作为灵感,我使用了这个 video,其中 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);
});

常见的 Nugets:

场景 #1:Sustainsys.Saml2.AspNetCore2 (0.24.0)

包 'Sustainsys.Saml2.AspNetCore2 0.24.0' 已使用“.NetFramework,Version=v4.6.1”恢复。this and this 问题中提到的内容。最重要的是,我几乎没有编译错误,可能会导致 '类型 'EntityId' 和 'SecurityKeyIdentifierClause' 在未引用的程序集中定义。'

场景 #2:Sustainsys.Saml2.AspNetCore2 (2.0.0-preview01)

缺少整个 Sustainsys 命名空间,它被替换为 Kentor.AuthServices。未找到参考 .AddSaml2(..)。

很好,我可以通过 更新 nugets 和导入 到以下状态来解决我的问题:

Nugets:

  • IdentityServer4 (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;