[OAuth][Keycloak] invalid_grant 会话在尝试使用 refresh_token 时未激活

5 oauth-2.0 openid-connect keycloak refresh-token

我正在尝试使用 ClientOAuth2.Token.refresh() 刷新 oauth2 令牌,但有时会不断收到错误消息: {"error":"invalid_grant","error_description":"Session not active"}

这是我被 Fiddler 捕获的请求

POST [URL]= HTTP/1.1
Host: [URL]
Connection: keep-alive
Content-Length: 2250
Accept: application/json, application/x-www-form-urlencoded
Origin: http://localhost:8080
Authorization: Basic YXNpbW92LWRldi1laGlzLXdlYjo=
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36
Sec-Fetch-Mode: cors
Content-Type: application/x-www-form-urlencoded
Sec-Fetch-Site: cross-site
Referer: http://localhost:8080/
Accept-Encoding: gzip, deflate, br
Accept-Language: en,vi;q=0.9,de;q=0.8,vi-VN;q=0.7,en-US;q=0.6,en-AU;q=0.5

refresh_token=[token]&grant_type=refresh_token
Run Code Online (Sandbox Code Playgroud)

也许我在 KeyCloak 帐户上的设置有问题。有什么建议吗?

Gab*_*ica 9

您需要在检索原始令牌时添加范围offline_access,否则当相关用户会话不活动时您将无法刷新它(这是特定于OIDC,而不是oauth2)。


Gar*_*her 1

可能是您的刷新令牌授予消息不完整 - 缺少客户端 ID 或脱机访问范围 - 请参阅我有关 OAuth 消息的文章中的刷新令牌授予部分。