Keycloak 刷新令牌不是离线类型

时间:2021-07-22 16:22:45

标签: oauth-2.0 keycloak access-token bearer-token keycloak-services

我不熟悉 keycloak 中的身份管理和用户管理。

我正在尝试生成离线刷新令牌。我正在使用 keycloak 12.0.1 我在 ldap-demo 领域创建了一个客户端,并确保默认情况下在范围内添加了 offline_access。这个 curl 命令给了我不记名令牌和刷新令牌。现在,当我在 jwt.io 中检查刷新令牌时,它的“typ”不是“离线”,而是仅刷新。我还定义了一个用户,角色默认定义了 offline_access。

refresh_token=`curl \
-d "client_id=ldap-app" -d "client_secret=password" \
-d "username=user1" -d "password=password" \
-d "grant_type=password"  \
-d "scope=offline_access"  \
https://localhost:8080/auth/realms/ldap-demo/protocol/openid-connect/token  | jq -r '.refresh_token'`

请建议我需要在 keycloak 中进行的所有领域级别配置或客户端级别配置。

1 个答案:

答案 0 :(得分:1)

刷新令牌格式是特定于供应商的,您无法通过查看它来确定行为。

offline_access 范围将出现在访问令牌中,如果它是 JWT,您将能够在其中查看此范围。

要测试的是发送刷新令牌授予消息 - 您可以通过 curl command 或使用 OAuth Tools 执行此操作。

完整的行为通常是这样的:

  • 授权服务器 (AS) - 例如 Keycloak - 在其数据库中存储委托的详细信息
  • 在您的情况下,在处理密码授予消息时会发生委托
  • 当您使用刷新令牌时,会根据存储的状态检查详细信息

这意味着返回给客户的令牌不需要透露全部细节。例如,在某些情况下可以而且应该返回不透明/不可读的令牌。