首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.NET核心通过可持续发展系统登录的多个SAML2身份提供商

使用.NET核心通过可持续发展系统登录的多个SAML2身份提供商
EN

Stack Overflow用户
提问于 2021-01-12 17:18:14
回答 1查看 180关注 0票数 0

我们正在使用带有.NET核心的可持续发展中间件来连接到SAML2身份提供商。它工作得很好。

但是,当我们在Startup.cs中添加多个IDP时,我们就会遇到麻烦。用户将选择要登录到哪个IDP,然后代码应向该IDP发送质询。

我们如何在代码中指定哪个IDP?

使用标准的.NET框架,它是直接的:

代码语言:javascript
复制
Context.GetOwinContext().Environment.Add("saml2.idp", new Entity(IDP2EntityId));

但是在.NET核心中间件中没有这样的构造。

这是我的代码。基本上,我在启动时添加了两个IDPs,但我不知道如何在登录/质询期间指定哪一个?使用此代码时,IDP-1总是被选中,因为它是第一个添加的。

STARTUP.CS

代码语言:javascript
复制
    public void ConfigureServices(IServiceCollection services)
    {
        var authenticationBuilder = GetAuthenticationBuilder(services);
        string authenticationScheme = "saml2.idp"
        authenticationBuilder.AddSaml2(authenticationScheme, options =>
        {
            options.SPOptions = GetSPOptions();

            // Add IDP-1
            options.IdentityProviders.Add(
            new IdentityProvider(new EntityId(IDPEntityUrl1), options.SPOptions)
            {
                MetadataLocation = IDPMetadataUrl1
            });

            // Add IDP-2
            options.IdentityProviders.Add(
            new IdentityProvider(new EntityId(IDPEntityUrl2), options.SPOptions)
            {
                MetadataLocation = IDPMetadataUrl2
            });
        }
    }

LOGINCONTROLLER.CS

代码语言:javascript
复制
    string saml2AuthenticationScheme = "saml2.idp";
    var props = new AuthenticationProperties
    {
        RedirectUri = returnUrl,
        Items = { { "scheme", saml2AuthenticationScheme } }
    };
    return Challenge(properties: props, saml2AuthenticationScheme);

如何指定要在LoginController中使用的IDP

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-12 18:55:44

我找到了解决方案。我们研究了可持续发展的代码,发现了未记录的(?)在AuthenticationProperties.Items中使用" IDP“项指定idp的功能。如下所示:

LoginController.cs

代码语言:javascript
复制
string saml2AuthenticationScheme = "saml2.idp";
var props = new AuthenticationProperties
{
    RedirectUri = returnUrl,
    Items = { { "scheme", saml2AuthenticationScheme }, { "idp", theSelectedIDPIdentityId } }
};
return Challenge(properties: props, saml2AuthenticationScheme);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65681006

复制
相关文章

相似问题

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