在Azure Microsoft Entra ID的SSO中,能否避免管理过期密钥/证书?
无需管理过期密钥/证书的.NET Web App Microsoft登录SSO解决方案
针对你的场景,完全可以通过**托管标识(Managed Identity)+ 联合凭据(Federated Credentials)**实现无密钥/证书的SSO配置,不用再手动维护过期的密钥。以下是具体实现步骤:
一、配置Azure Web App的系统分配托管标识
- 打开Azure门户,进入你的Web App资源
- 左侧导航栏选择「标识」→「系统分配」,将状态切换为「开启」,点击保存
二、给应用注册添加联合凭据
- 进入对应的Entra ID应用注册页面,打开「Certificates & secrets」→「Federated credentials」
- 点击「添加凭据」,选择「Azure resource」类型
- 在配置页面:
- 「受众」选择
api://AzureADTokenExchange - 「订阅」选择Web App所在的订阅
- 「资源类型」选择「应用服务」
- 「资源」选择你的Web App
- 填写凭据名称,点击「添加」
- 「受众」选择
三、修改.NET Web App的配置和代码
- 移除appsettings.json中的密钥配置:删掉
ClientSecret相关的配置项,只保留ClientId和TenantId - 更新认证配置代码:
在Program.cs中,使用Azure.Identity库的DefaultAzureCredential自动获取令牌,替代手动配置的密钥:using Azure.Identity; var builder = WebApplication.CreateBuilder(args); // 添加Microsoft身份认证,使用托管标识获取令牌 builder.Services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration) .EnableTokenAcquisitionToCallDownstreamApi() .AddInMemoryTokenCaches() .AddClientCredentials(new DefaultAzureCredential()); // 其他配置... var app = builder.Build(); // 中间件配置... app.Run(); - 安装必要的NuGet包:确保项目中安装了
Azure.Identity和Microsoft.Identity.Web包
四、验证配置
部署Web App后,访问应用的SSO登录流程,此时应用会通过托管标识自动从Entra ID获取令牌,无需依赖手动配置的密钥,也就不存在密钥过期的问题。
补充说明
- 你之前尝试联合凭据时遇到的证书错误,是因为选错了凭据类型,选择「Azure resource」类型不需要上传任何证书,直接关联Web App的托管标识即可
- 系统分配托管标识与Web App绑定,删除Web App时标识会自动删除,无需额外清理
内容的提问来源于stack exchange,提问作者user24802569
相关产品推荐
相关产品推荐

