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

如何将我的Azure AD应用转换为confidential client(而非public client)

如何将Azure AD应用转换为Confidential Client

首先得明确核心逻辑:Azure AD应用只要能安全持有客户端凭据(密钥或证书),就能成为Confidential Client——毕竟这类客户端的本质就是能证明自身身份、不会泄露凭据的应用(比如Web后端、API服务)。下面是具体的操作步骤和注意事项:

1. 进入Azure门户找到目标应用

  • 打开Azure门户,搜索并进入Azure Active Directory
  • 在左侧菜单选择应用注册,找到你要修改的应用

2. 添加客户端凭据(Secret或证书)

Confidential Client必须至少拥有一种安全凭据,推荐优先用证书(比密钥更安全),两种方式任选其一即可:

方式一:添加客户端密钥(Client Secret)

  • 在应用左侧菜单点击证书和密码
  • 切换到客户端密码标签,点击新建客户端密码
  • 填写描述(比如"Confidential Client 密钥"),选择过期时间后点击添加
  • 关键提示:生成的密钥值只会显示一次,一定要立刻复制并存到安全的地方(比如服务器环境变量、密钥管理服务),丢失后只能重新创建

方式二:添加证书(更安全)

  • 同样在证书和密码页面,切换到证书标签,点击上传证书
  • 选择本地的PFX或CER格式证书文件,填写描述后点击添加
  • 证书会被安全存储在Azure AD中,后续应用可通过证书文件或指纹完成身份验证

3. 确认客户端类型及相关设置

  • 回到应用的概述页面,查看客户端类型字段,添加凭据后通常会自动更新为Confidential
  • 若未自动更新,进入认证页面,在高级设置里找到允许公共客户端流,确保这个选项是关闭的——关闭后应用就只能用Confidential Client的认证方式,无法再以Public Client身份发起请求

4. 更新应用代码适配Confidential Client

现在应用已经是Confidential Client了,需要在代码里使用新添加的凭据来获取令牌:

  • 如果你用Microsoft Identity Client(MSAL)库,比如MSAL.NET,要改用ConfidentialClientApplicationBuilder来构建客户端实例,而不是之前的PublicClientApplicationBuilder
  • 示例代码(C#):
var confidentialClient = ConfidentialClientApplicationBuilder
    .Create("<你的应用客户端ID>")
    .WithClientSecret("<你的客户端密钥>") // 或用.WithCertificate()传入证书对象
    .WithAuthority(new Uri("https://login.microsoftonline.com/<你的租户ID>"))
    .Build();

额外说明

根据《Configurable token lifetimes in Azure Active Directory (Public Preview)》文档,Confidential Client的refresh token默认是"until-revoked"(直到被吊销),这也是它相比Public Client的一大优势——Public Client的refresh token有效期通常较短,且无法设置为长期有效。

最后务必注意:Confidential Client的核心是安全存储凭据,绝对不能把密钥或证书暴露给前端用户(比如写在浏览器JS代码里),必须放在服务器端或安全的后端环境中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:25:08