我想使用Spring Cloud为OAuth2实现令牌刷新。
我可以通过使用以下有效负载向/oauth/token
发送请求来创建令牌:
curl --location --request POST 'http://localhost:8080/engine/oauth/token' \
--header 'Authorization: Basic YWRtaW46cXdlcnR5' \
--form 'username=admin' \
--form 'password=qwerty' \
--form 'grant_type=password' \
--form 'scope=read'
但是对于刷新令牌,使用相同的路径/oauth/token
。我还需要将用户名和密码发送到标题'Authorization: Basic YWRtaW46cXdlcnR5'
中,我没有它们。我可以使用带有此有效负载的刷新令牌来创建新令牌:
curl --location --request POST 'http://localhost:8080/engine/oauth/token' \
--header 'Authorization: Basic YWRtaW46cXdlcnR5' \
--form 'grant_type=refresh_token' \
--form 'scope=read' \
--form 'refresh_token=....'
您知道如何解决此问题吗?
Github code
答案 0 :(得分:1)
刷新令牌授予消息不需要授权标头。尝试删除它,然后将client_id作为表单参数发送。您可能还需要配置offline_access范围,才能刷新令牌。
虽然我记得最后一次,但ROPC不应支持令牌刷新,尽管对于所有提供程序而言,行为可能并不相同。
最后,请注意,如果您有更好的选择,则不建议真正使用ROPG。 This post总结了问题。
如果您可以总结使用情况,我也许可以推荐一个更好的选择。