Azure AD企业应用SAML SSO与Graph API认证报错AADSTS76020咨询
解决AADSTS76020错误:无需拆分应用,调整配置即可
错误原因
报错AADSTS76020: Application configured to use only protocols with signed requests的核心原因是:你的Azure企业应用在SAML SSO设置中开启了仅允许已签名的请求,但调用Graph API时使用的客户端凭证流(Client Credentials Flow)默认未对请求签名,导致被Azure AD拦截。
解决方案(无需创建两个应用)
方案1:调整SAML签名要求(推荐)
这是最直接的解决方式,且不会影响安全性:
- 登录Azure门户,进入该企业应用的单一登录 > SAML配置页面
- 打开高级SAML设置,将要求已签名的请求选项设置为否
- 保存配置后,重新用ClientSecret或证书方式发起Graph API认证即可
注意:该设置仅针对SAML登录请求的签名要求,不影响客户端凭证流的安全性——用证书做客户端凭证认证时,SDK会自动用私钥签名JWT断言来获取Token,本身已具备安全验证机制。
方案2:保持SAML签名要求,确保客户端凭证请求签名
如果业务必须开启“要求已签名的请求”,则需要确保客户端凭证请求符合签名要求:
- 使用证书认证时:
- 确认上传到企业应用证书和密码中的证书是包含私钥的PFX文件,且证书的密钥用法包含数字签名权限
- 检查Graph SDK的证书配置:以.NET SDK为例,确保正确加载证书(比如从本地存储或密钥 vault 获取),SDK会自动用证书签名请求
- 使用ClientSecret时:
- 由于ClientSecret方式无法对请求签名,因此必须改用证书认证方式,否则无法通过Azure AD的签名校验
补充说明
你提到禁用证书验证后能正常获取Token,本质是因为禁用后Azure AD取消了请求签名的强制要求,客户端凭证流的请求得以通过。但不建议长期保持该状态,优先采用上述两种方案修复。
内容的提问来源于stack exchange,提问作者A. Gorin
相关产品推荐
相关产品推荐

