Keycloak-如何请求具有自定义寿命的令牌?

Lor*_*eur 5 jwt openid-connect keycloak

上下文:我们通常通过通过授权标头传递令牌来使用Keycloak来保护我们的API。但是,这些API还允许用户下载文件(例如:)https://api.service.io/users.xlsx

要使用这些“下载端点”,我们的Web客户端应用程序通过查询字符串传递用户的令牌。(例如 https://api.service.io/users.xlsx?accessToken=${bearerToken}))。

问题:通过查询字符串传递令牌有几个安全漏洞(浏览器历史记录,...)。因此,我们希望传递一个寿命很短的令牌(例如,寿命为15秒),而不是普通令牌(默认为300秒)。

问题:我们如何通过以下方式从Keycloak API请求不同的令牌(例如/realms/#{realm_id}/protocol/openid-connect/token):

  • 提供普通访问令牌(不是凭据);
  • 指定不同的寿命?

Lor*_*eur 5

阅读 Keycloak 的源代码后,似乎不可能(版本3.4.2.Final)在运行时要求特定的生命周期。

但是,我开发了一个 Keycloak 自定义 REST 端点来做到这一点。https://github.com/looorent/keycloak-configurable-token-api

当这个 JAR 文件部署在 Keycloak 中时,您可以在运行时要求给定的生命周期。例如: $ curl -X POST -d '{ "tokenLifespanInSeconds": 20}' -H "Content-Type: application/json" -H "Authorization: Bearer <user-access-token>" http://auth.service.io/auth/realms/a-realm/configurable-token