如何配置Azure AAD应用以无需Client_secret生成用户Access Token
解决Azure AD应用无需client_secret获取Access Token的问题
修改现有应用配置
针对已有的第二个Client_id对应的应用,按以下步骤调整:
- 登录Azure门户,找到目标应用注册
- 进入「认证」页面
- 滚动到「高级设置」区域,将「允许公共客户端流」设置为「是」
- 保存配置后,再次调用
https://login.microsoftonline.com/tenantId/oauth2/token接口,传入client_id、grant_type=password、resource、username、password参数即可获取令牌,无需附加client_secret
创建新的公共客户端应用
如果需要新建符合要求的应用:
- 在Azure门户的「应用注册」中点击「新建注册」
- 填写应用名称,选择适配的账户类型(如仅限本组织目录内账户)
- 在「重定向URI」部分,选择「公共客户端/移动设备」类型,填写对应URI(桌面应用常用
urn:ietf:wg:oauth:2.0:oob) - 完成注册后,使用新生成的Client_id执行password grant流程,无需传入
client_secret
问题原因
报错AADSTS7000218是因为该应用被标记为机密客户端(如Web应用/API类型),这类应用必须验证自身身份,因此要求传入client_secret或client_assertion。而公共客户端(桌面、移动应用)无法安全存储密钥,Azure AD允许这类应用跳过密钥验证,直接通过password grant获取令牌。
内容的提问来源于stack exchange,提问作者user9297554
相关产品推荐
相关产品推荐

