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

Spring Boot资源服务器无法验证Azure AD颁发的JWT令牌

解决Azure AD Client Credentials模式下Spring Boot API的JWT无效签名问题

问题根源

Azure AD通过Client Credentials模式颁发的JWT采用RS256非对称加密算法签名,你的问题核心是Spring资源服务器未正确加载Azure的公钥来验证签名,或配置存在不匹配。

分步解决方案

  • 确认Issuer URI配置正确性
    确保spring.security.oauth2.resourceserver.jwt.issuer-uri格式为https://login.microsoftonline.com/{你的租户ID}/v2.0,替换实际租户ID后,直接访问该URI,能返回包含jwks_uri字段的OpenID配置则说明URI有效。

  • 检查依赖完整性
    确保项目引入了正确的Spring OAuth2资源服务器依赖:

    <!-- Maven示例 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
    </dependency>
    

    避免混用旧版spring-security-oauth2等依赖。

  • 强制指定JWT签名算法
    在配置文件中明确指定RS256算法,避免Spring自动识别错误:

    # application.properties
    spring.security.oauth2.resourceserver.jwt.jws-algorithms=RS256
    
  • 校验Token的Issuer一致性
    解码Token的Payload,查看iss字段值,必须与你配置的issuer-uri完全一致(包括路径后缀、大小写),否则Spring会判定Token无效。

  • 检查Azure AD应用注册配置

    • API应用注册需在「公开API」中定义应用级权限(Client Credentials模式使用应用权限,而非委托权限);
    • 客户端应用需已添加该API的应用权限,且完成管理员同意(应用级权限必须由租户管理员授权)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:25:23