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

在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的配置和代码

  1. 移除appsettings.json中的密钥配置:删掉ClientSecret相关的配置项,只保留ClientId和TenantId
  2. 更新认证配置代码:
    在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();
    
  3. 安装必要的NuGet包:确保项目中安装了Azure.Identity和Microsoft.Identity.Web包

四、验证配置

部署Web App后,访问应用的SSO登录流程,此时应用会通过托管标识自动从Entra ID获取令牌,无需依赖手动配置的密钥,也就不存在密钥过期的问题。

补充说明

  • 你之前尝试联合凭据时遇到的证书错误,是因为选错了凭据类型,选择「Azure resource」类型不需要上传任何证书,直接关联Web App的托管标识即可
  • 系统分配托管标识与Web App绑定,删除Web App时标识会自动删除,无需额外清理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:33:40