首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ITfoxtec.Identity.Saml2登录用户

使用ITfoxtec.Identity.Saml2登录用户
EN

Stack Overflow用户
提问于 2021-03-11 17:26:21
回答 1查看 1.6K关注 0票数 3

我正在尝试使用IdentityServer4和ITfoxtec.Identity.Saml2库实现SAML2.0身份验证。

第一步是通过LDAP连接登录,这个部分运行良好,我得到了用户声明。

下一步是使用AD集成登录。

我主要学习本教程

https://developer.okta.com/blog/2020/10/23/how-to-authenticate-with-saml-in-aspnet-core-and-csharp

Saml配置代码如下

代码语言:javascript
复制
services.Configure<Saml2Configuration>(saml2Configuration =>
{
    saml2Configuration.AllowedAudienceUris.Add(saml2Configuration.Issuer);

    var entityDescriptor = new EntityDescriptor();
    entityDescriptor.ReadIdPSsoDescriptorFromUrl(new Uri(Configuration["Saml2:IdPMetadata"]));
    if (entityDescriptor.IdPSsoDescriptor != null)
    {
        saml2Configuration.SingleSignOnDestination = entityDescriptor.IdPSsoDescriptor.SingleSignOnServices.First().Location;
        saml2Configuration.SignatureValidationCertificates.AddRange(entityDescriptor.IdPSsoDescriptor.SigningCertificates);
    }
    else
    {
        throw new Exception("IdPSsoDescriptor not loaded from metadata.");
    }
});

services.AddSaml2();

在服务器重定向之后,在显示Idp登录页之前,我有一个错误:“证书在应用程序端没有正确配置”。

这是我第一次讨论SAML协议。任何帮助都是非常感谢的。

编辑:错误在AD端

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-11 20:26:18

有关更多信息,请访问ITfoxtec.Identity.Saml2 文档ASP.NET芯样

我不知道你在哪里看到了错误。它是在IdentityServer4应用程序还是在AD中?

您显示的配置读取AD元数据并设置IdP配置。您还需要加载依赖方配置。

代码语言:javascript
复制
services.Configure<Saml2Configuration>(Configuration.GetSection("Saml2"));

并设置依赖方签署证书,例如,如下所示

代码语言:javascript
复制
saml2Configuration.SigningCertificate = CertificateUtil.Load(AppEnvironment.MapToPhysicalFilePath(
            Configuration["Saml2:SigningCertificateFile"]), 

配置在一起

代码语言:javascript
复制
services.Configure<Saml2Configuration>(Configuration.GetSection("Saml2"));
services.Configure<Saml2Configuration>(saml2Configuration =>
{
    saml2Configuration.SigningCertificate = CertificateUtil.Load(AppEnvironment.MapToPhysicalFilePath(
        Configuration["Saml2:SigningCertificateFile"]), Configuration["Saml2:SigningCertificatePassword"]);
    saml2Configuration.AllowedAudienceUris.Add(saml2Configuration.Issuer);

var entityDescriptor = new EntityDescriptor();
    entityDescriptor.ReadIdPSsoDescriptorFromUrl(new Uri(Configuration["Saml2:IdPMetadata"]));
if (entityDescriptor.IdPSsoDescriptor != null)
    {
        saml2Configuration.SingleSignOnDestination = entityDescriptor.IdPSsoDescriptor.SingleSignOnServices.First().Location;
        saml2Configuration.SingleLogoutDestination = entityDescriptor.IdPSsoDescriptor.SingleLogoutServices.First().Location;
        saml2Configuration.SignatureValidationCertificates.AddRange(entityDescriptor.IdPSsoDescriptor.SigningCertificates);
    }
else
    {
        throw new Exception("IdPSsoDescriptor not loaded from metadata.");
    }
});
services.AddSaml2();  

备注

为了解决像您这样的情况,我创建了FoxIDs,它支持OpenID连接,可以用SAML2.0连接到AD。FoxID处理OpenID连接和SAML2.0之间的转换。实际上,FoxID也使用ITfoxtec.Identity.Saml2库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66587493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档