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

ASP.NET Core 9.0 Blazor基于IP选择认证方案的技术问询

Blazor应用IP智能切换认证方案配置

我需要开发一款Blazor应用,实现基于IP地址自动切换认证方式:内网用户使用集成Active Directory的Windows认证,外网用户使用OpenId Connect(OIDC)认证。网站部署于IIS,目前已尝试以下认证配置:

.AddPolicyScheme("SmartAuth", "SmartAuth", o =>
 {
   o.ForwardDefaultSelector = context =>
   {
     var hasCookie = context.Request.Cookies.ContainsKey(".AspNetCore.Cookies");
     if (hasCookie)
       return "Cookies";
     return IpAwareChallengeHandler.IsInternal(context) ? IISDefaults.AuthenticationScheme : "Cookies";
   };
 })
 .AddPolicyScheme("SmartChallenge", "SmartChallenge", o =>
 {
   o.ForwardDefaultSelector = context =>
   {
     var p = context.Request.Path;
     if (p.StartsWithSegments("/signin-oidc") || p.StartsWithSegments("/signout-callback-oidc"))
       return "oidc";
     return IpAwareChallengeHandler.IsInternal(context) ? IISDefaults.AuthenticationScheme : "oidc";
   };
 });

此外,还需结合自定义需求校验Negotiate认证,已配置如下授权策略:

builder.Services.AddAuthorizationBuilder()
  .AddPolicy("Access", p => p
    .AddAuthenticationSchemes(IISDefaults.AuthenticationScheme, NegotiateDefaults.AuthenticationScheme)
    .RequireAuthenticatedUser()
    .AddRequirements(new UserRequirement()));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 12:12:15