刷新Keycloak脱机令牌

时间:2018-10-18 20:13:27

标签: oauth oauth-2.0 postman keycloak

我目前正在尝试使用Keycloak获得脱机令牌。我的问题是,我无法刷新曾经接收过的令牌。

当我最初调用令牌端点时,我得到了一个正确的响应,其中包含一个有效的访问令牌:

{
  "access_token": "<access-token>",
  "expires_in": 900,
  "refresh_expires_in": 0,
  "refresh_token": "<refresh-token>",
  "token_type": "bearer",
  "not-before-policy": 1539890980,
  "session_state": "a178faf2-xxxx-xxxx-xxxx-fb16548b6805",
  "scope": "email profile offline_access"
}

然后,我尝试使用刷新

curl -X POST \
  https://<my-url>/auth/realms/<realm>/protocol/openid-connect/token \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'cache-control: no-cache' \
  -d 'client_id=<client-id>
  -d 'refresh_token=<refresh-token>
  -d 'grant_type=refresh_token'

我收到以下错误:

{
  "error": "invalid_grant",
  "error_description": "Offline session not active"
}

我查看了Keycloaks Jira的问题,但这似乎不是已知问题。谁能帮助我使脱机令牌运行?有什么特别的把戏吗?感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

对于脱机会话,请确保您的领域设置的值大于0。它们具有与正常会话不同的生存期。

默认情况下,我认为将其设置为30天,但请仔细检查。

然后检查领域设置,以查看是否也允许重新使用刷新令牌。如果您禁用了令牌的重用,那么请确保您不多次使用刷新令牌。

如果关闭了重用功能,那么我现在什么都没想到。令牌过期后,我才看到您的错误。