如何在本地调试启用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
相关产品推荐
相关产品推荐

