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

基于主机名的多租户SaaS应用Azure AD B2C认证方案咨询

多租户SaaS认证方案答疑

一、AAD B2C是否为合适产品?

AAD B2C完全适配你的场景,它是专门为客户身份访问管理(CIAM)设计的服务,原生支持多租户架构,并且可以无缝集成Google、SAML/OIDC、Azure AD等各类外部身份提供商,能满足你每个租户自主选择认证方式的需求。

至于Entra External ID(原Azure AD B2B),它更偏向企业间的协作访问场景——比如让外部企业员工用自己公司的AAD账号访问你的应用,虽然也支持外部IdP集成,但灵活性不如AAD B2C,尤其是当你的租户包含个人用户(用邮箱/Google认证)时,AAD B2C的适配性会更好。

二、能否通过自定义策略按URL选择认证机制?

可以实现,核心思路是从请求URL中提取租户标识,再通过自定义策略的条件逻辑匹配对应的认证流程:

  • 第一步,在策略中添加ClaimsTransformation逻辑,解析请求的Host头,提取租户子域名(比如从tenantA.mysaas.com中拿到tenantA)作为声明。
  • 第二步,在OrchestrationStep里使用ClaimEquals断言做条件判断,根据不同的租户声明,触发对应的身份提供商认证流程:比如tenantA走Google OAuth,tenantB走Azure AD OIDC,tenantC走SAML认证。

你可以在自定义策略的用户旅程中,动态控制身份提供商的展示或直接重定向到指定IdP,完全能实现按租户URL分流认证的需求。

三、若AAD B2C不合适,.NET/C#实现B2B SSO的最简方式

如果不想用AAD B2C,最简方案是基于ASP.NET Core的认证中间件,结合成熟的第三方库来实现:

  • OIDC类认证(Google/Azure AD):使用官方的Microsoft.AspNetCore.Authentication.OpenIdConnect包,提前为每个租户配置对应的OIDC提供商参数,然后在请求管道中根据租户子域名动态选择认证方案。
  • SAML类认证:使用ITfoxtec.Identity.Saml2.AspNetCore这类主流SAML库,同样按租户配置SAML IdP的元数据、证书等信息,动态触发认证流程。

示例代码片段(简化逻辑):

app.Use(async (context, next) =>
{
    var hostParts = context.Request.Host.Host.Split('.');
    if (hostParts.Length > 1)
    {
        var tenant = hostParts[0];
        switch (tenant)
        {
            case "tenantA":
                await context.ChallengeAsync("Google");
                return;
            case "tenantB":
                await context.ChallengeAsync("AzureAD");
                return;
            case "tenantC":
                await context.ChallengeAsync("SAML");
                return;
        }
    }
    await next();
});

这种方式不需要依赖Azure的CIAM服务,全程自主控制认证流程,适合对成本或定制化有特殊要求的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:35:16