You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sustainsys.Saml2多租户场景指定IdP调用代码示例咨询(适配HTTPModule/AspNetCore)

Sustainsys.Saml2 多租户场景指定IdP调用实现指南

Sustainsys团队的Anders说明:配置选项中的IdentityProviders属性是一个集合,只需向其中添加多个IdentityProvider对象即可。如果要选择调用指定的IdP,只需在AuthProps中添加键为idp的项,将其值设置为目标IdP的EntityId即可,运行时也支持修改该集合。


核心操作代码示例

在触发SAML认证挑战时,构造AuthenticationProperties对象添加指定IdP配置即可,示例如下:

// 替换为你的多租户业务逻辑,读取当前租户绑定的IdP EntityId
var targetIdpEntityId = _tenantConfigService.GetCurrentTenantSamlIdpEntityId();

var authProps = new AuthenticationProperties
{
    RedirectUri = Url.Action("LoginCallback", "Account"),
    // 可追加其他自定义认证属性
    Items =
    {
        // *核心配置:添加键为`idp`的项,值为目标IdP的EntityId*
        { "idp", targetIdpEntityId }
    }
};

// 触发SAML2认证挑战,参数为你配置的Sustainsys.Saml2认证方案名,默认值为Saml2
return Challenge(authProps, "Saml2");

原理说明

你对IdP标识存储逻辑的理解是正确的:

  • 配置上述idp项后,Sustainsys.Saml2会自动将关联信息存入SAML请求的RelayState参数
  • IdP回调ACS端点时,库会自动从RelayState中解析对应IdP标识,无需手动处理匹配逻辑,自动完成响应校验、属性解析等操作

多租户场景适配建议

  • 建议将租户与IdP EntityId的映射关系存入独立的租户配置模块,不要硬编码在启动配置中
  • 运行时新增租户的IdP无需重启服务,可直接修改IdentityProviders集合动态添加,示例如下:
// 构造注入IOptionsMonitor<Saml2Options>获取运行时可修改的配置实例
private readonly IOptionsMonitor<Saml2Options> _saml2Options;

public void AddTenantIdP(string entityId, string metadataUrl)
{
    var newIdp = new IdentityProvider(new EntityId(entityId), _saml2Options.CurrentValue.SPOptions)
    {
        MetadataLocation = metadataUrl,
        // 可追加其他IdP自定义配置,如签名校验规则、断言格式要求等
    };
    _saml2Options.CurrentValue.IdentityProviders.Add(newIdp);
}

内容的提问来源于stack exchange,提问作者mjorrens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:06:02