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

如何在本地调试启用Easy Auth的Azure App Service .NET6 Web应用用户认证?

本地调试.NET6 Web应用的OpenID Connect认证方案

Azure App Service的内置认证(Easy Auth)是平台级功能,本地环境无法直接复用,需要在应用代码中显式配置OpenID Connect(OIDC)认证中间件来实现本地调试,具体步骤如下:

1. 安装必要的NuGet包

在项目中安装认证相关依赖包:

dotnet add package Microsoft.AspNetCore.Authentication.OpenIdConnect
dotnet add package Microsoft.AspNetCore.Authentication.Cookies

2. 配置认证服务

在Program.cs中添加认证与授权服务的配置,从本地配置文件读取OIDC参数(避免硬编码敏感信息):

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllersWithViews();

// 配置认证体系
builder.Services.AddAuthentication(options =>
{
    options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options =>
{
    // 从配置文件读取OIDC提供者核心信息
    options.Authority = builder.Configuration["Oidc:Authority"];
    options.ClientId = builder.Configuration["Oidc:ClientId"];
    options.ClientSecret = builder.Configuration["Oidc:ClientSecret"];
    
    // 配置OIDC响应类型与权限范围
    options.ResponseType = OpenIdConnectResponseType.Code;
    options.Scope.Add("openid");
    options.Scope.Add("profile");
    
    // 保存令牌以便后续API调用(可选)
    options.SaveTokens = true;
    // 回调路径需与OIDC提供者后台配置完全一致
    options.CallbackPath = "/signin-oidc";
});

// 添加授权服务
builder.Services.AddAuthorization();

var app = builder.Build();

// 中间件顺序必须遵循:Https重定向 → 路由 → 认证 → 授权
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

3. 本地配置OIDC参数

在appsettings.Development.json中添加OIDC提供者的基础配置,敏感信息如ClientSecret建议用用户机密存储,避免提交到代码仓库:

{
  "Oidc": {
    "Authority": "你的OIDC提供者授权地址(例如Azure AD的租户端点)",
    "ClientId": "在OIDC提供者处注册的应用客户端ID",
    "ClientSecret": "应用客户端密钥"
  }
}

用用户机密存储敏感信息

打开终端执行以下命令,将ClientSecret存入本地用户机密:

dotnet user-secrets set "Oidc:ClientSecret" "你的客户端密钥"

4. 配置OIDC提供者的允许回调地址

登录你的OIDC提供者后台(例如Azure AD应用注册页面),添加本地调试的回调URI,示例:

  • 登录回调:https://localhost:5001/signin-oidc(需与代码中CallbackPath完全一致)
  • 登出回调(可选):https://localhost:5001/signout-callback-oidc

5. 处理环境差异(可选)

如果希望生产环境继续使用Azure App Service的内置认证,可通过环境判断区分配置:

if (builder.Environment.IsDevelopment())
{
    // 本地开发环境配置OIDC认证
    builder.Services.AddAuthentication(...)
        .AddCookie()
        .AddOpenIdConnect(...);
}
else
{
    // 生产环境复用App Service内置认证
    builder.Services.AddAuthentication()
        .AddAzureAppServiceAuthentication();
}

注:生产环境需额外安装Microsoft.AspNetCore.Authentication.AzureAppService包

6. 本地调试验证

启动本地开发服务器(默认HTTPS端口为5001),访问需要授权的路由,系统会自动跳转到OIDC提供者的登录页面,登录成功后将回调回本地应用并完成身份认证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:20:28