首页 > 解决方案 > 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:

场景 #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(..)。

标签: oauth-2.0asp.net-core-2.0saml-2.0identityserver4sustainsys-saml2

解决方案


很好,我能够通过将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;

推荐阅读