我使用spring-cloud-starter-oauth2配置了OAuth2授权服务器和资源服务器 . 授权服务器使用JdbcTokenStore来持久化令牌(我仍然有“找不到令牌xxxx的刷新令牌”消息,这似乎是一个错误) . 但是,我想在这里解决的问题是:

我能够请求新的令牌并使用它来从资源服务器获取数据 . 但是,一旦令牌过期,我就无法使用给定的刷新令牌刷新令牌 .

使用curl:

curl -XPOST foo:secret@localhost:9009/myauthserver/oauth/token  -d grant_type=refresh_token -d refresh_token=4187f090-a355-4613-bc17-2e4565ffdc0b

将返回:

{“error”:“server_error”,“error_description”:“给定的id不能为null !;嵌套异常是java.lang.IllegalArgumentException:给定的id不能为null!”}

在后端,错误是:

2017-02-20 15:47:31.058 WARN 11152 --- [nio-9009-exec-9] .mmaExceptionHandlerExceptionResolver:由Handler执行引起的已解决异常:org.springframework.dao.InvalidDataAccessApiUsageException:给定的id不能是空值!;嵌套异常是java.lang.IllegalArgumentException:给定的id不能为null!

有趣的是,如果我给出一个无效的令牌,它实际上会返回

{“error”:“invalid_grant”,“error_description”:“无效的刷新令牌:4187f090-a355-4613-bc17-2e4565ffdcee”}