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

ASP.NET Core Identity Server未认证时如何直接跳转Azure AD登录页

实现跳过Identity Server默认登录页直跳Azure AD的步骤

1. 确认Azure AD认证Scheme配置

首先确认你在服务注册时给Azure AD设置的认证Scheme名称,示例配置如下:

// Program.cs 或 Startup.cs 中的认证服务注册代码
builder.Services.AddAuthentication()
    .AddOpenIdConnect("AzureAd", "Microsoft 登录", options =>
    {
        options.Authority = "https://login.microsoftonline.com/你的Azure租户ID/v2.0";
        options.ClientId = "你的Azure AD应用客户端ID";
        options.ClientSecret = "你的Azure AD应用客户端密钥";
        options.ResponseType = "code";
        options.SaveTokens = true;
        // 其余Azure AD配置保持原有逻辑即可
    });

上述代码中第一个参数"AzureAd"就是你需要后续用到的Scheme值。

2. 配置Identity Server客户端参数

在你需要跳过默认登录页的客户端配置中,添加DefaultIdentityProvider参数指定为上面的Azure AD Scheme值,可选添加IdentityProviderRestrictions限制仅允许该提供商登录:

// Identity Server 客户端配置代码
new Client
{
    ClientId = "你的业务应用客户端ID",
    ClientName = "你的业务应用名称",
    // 其余原有客户端配置(跳转地址、授权类型、作用域等)保持不变
    DefaultIdentityProvider = "AzureAd",
    // 可选配置:禁止该客户端使用其他登录方式
    IdentityProviderRestrictions = new List<string> { "AzureAd" }
}

如果要让所有客户端都统一直跳Azure AD,不需要逐个配置,可以直接在Identity Server服务注册时全局禁用本地登录,且只注册Azure AD一个外部登录提供商即可。

3. 调整登录入口逻辑(可选兜底配置)

如果上述配置后仍未生效,找到Identity Server自带的AccountController中的Login GET方法,添加判断逻辑直接触发Azure AD认证挑战:

[HttpGet]
public async Task<IActionResult> Login(string returnUrl)
{
    var loginViewModel = await BuildLoginViewModelAsync(returnUrl);
    // 判断仅存在一个可用外部提供商且未开启本地登录时,直接跳转
    if (loginViewModel is { EnableLocalLogin: false, ExternalProviders.Count: 1 })
    {
        var aadScheme = loginViewModel.ExternalProviders.First().AuthenticationScheme;
        return Challenge(new AuthenticationProperties
        {
            RedirectUri = Url.Action("Callback", "ExternalLogin", new { ReturnUrl = returnUrl })
        }, aadScheme);
    }
    // 原有返回登录页的逻辑保留作为降级
    return View(loginViewModel);
}

注意事项

  • 确保DefaultIdentityProvider的取值和你注册Azure AD时的Scheme完全一致,大小写敏感
  • 如果部分客户端需要保留Identity Server默认登录页,只需要给需要直跳Azure AD的客户端单独添加DefaultIdentityProvider配置即可

内容的提问来源于stack exchange,提问作者Low Chen Thye

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:15:10