我已使用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不能为空!;嵌套异常是java.lang.IllegalArgumentException:给定的id不能为null!”}
在后端,错误是:
2017-02-20 15:47:31.058 WARN 11152 --- [nio-9009-exec-9] .m.m.a.ExceptionHandlerExceptionResolver:已解决的异常导致 由Handler执行: org.springframework.dao.InvalidDataAccessApiUsageException:给定的 id不能为null!嵌套异常是 java.lang.IllegalArgumentException:给定的id不能为null!
有趣的是,如果我给出一个无效的令牌,它实际上会返回
{“error”:“invalid_grant”,“error_description”:“无效的刷新令牌:4187f090-a355-4613-bc17-2e4565ffdcee”}