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

Spring Authorization Server返回invalid_grant错误排查求助

问题分析与解决方案

常见原因及对应解决方法

1. 授权码已被使用或过期

Authorization Code模式下,授权码是一次性有效的,一旦被兑换成令牌就会失效。如果你的客户端(如http://127.0.0.1:8222对应的服务)已经自动用该授权码换过令牌,或者授权码超过默认有效期(通常5分钟),再次使用就会返回invalid_grant。

解决方法:

  • 重新走授权流程获取新的授权码,拿到后立即在Postman中使用,避免过期。
  • 测试前关闭客户端服务,防止其自动处理授权码兑换逻辑。

2. 客户端认证方式错误

你的客户端配置的认证方式是client_secret_basic,调用令牌端点时必须遵循Basic Auth规范传递凭证:

  • 将client_id:client_secret做Base64编码,放在请求头Authorization中,格式为Basic <Base64编码字符串>。
  • 示例:你的client_id=oidc-client、client_secret=secret,编码后为b2lkYy1jbGllbnQ6c2VjcmV0,请求头应为Authorization: Basic b2lkYy1jbGllbnQ6c2VjcmV0。

Postman设置步骤:

  1. 新建POST请求,地址填http://localhost:9000/oauth2/token。
  2. 切换到Authorization标签,类型选择Basic Auth。
  3. 输入Username为oidc-client,Password为secret,Postman会自动生成合规的Authorization头。

3. 重定向URI不匹配

兑换令牌时,必须传递和获取授权码时完全一致的redirect_uri参数,包括协议、IP/域名、端口、路径,大小写也必须一致。

检查点:

  • 确认Postman请求体中redirect_uri参数值为http://127.0.0.1:8222/login/oauth2/code/oidc-client,和授权请求中的地址完全相同。
  • 请求体需包含以下x-www-form-urlencoded参数:
    • grant_type=authorization_code
    • code=<新获取的授权码>
    • redirect_uri=<和授权时一致的地址>

4. 配置冲突问题

你同时在application.yml和SecurityConfig的registeredClientRepository()方法中配置了客户端信息,这可能导致Spring Authorization Server加载的客户端配置不一致,引发认证失败。

解决方法:

  • 保留其中一种配置方式即可,推荐删除application.yml中的spring.security.oauth2.authorizationserver.client部分,因为代码中通过RegisteredClientRepository注册的客户端优先级更高。

5. 会话关联失效

授权码和用户的登录会话绑定,如果获取授权码后,用户会话失效(比如重启授权服务器、浏览器清除Cookie),授权码会直接失效。

解决方法:

  • 获取授权码后,在同一个会话有效期内(未重启服务、未清除Cookie)立即兑换令牌。

测试验证步骤

  1. 重启授权服务器,确保配置修改生效。
  2. 重新访问授权端点,完成登录和授权同意流程,获取新的授权码。
  3. 在Postman中按要求构建请求:
    • 请求方法:POST
    • 请求地址:http://localhost:9000/oauth2/token
    • Authorization:Basic Auth,用户名oidc-client,密码secret
    • 请求体:选择x-www-form-urlencoded,添加参数:
      • grant_type: authorization_code
      • code: <新获取的授权码>
      • redirect_uri: http://127.0.0.1:8222/login/oauth2/code/oidc-client
  4. 发送请求,正常情况下会返回包含access_token的响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:05:55