Keycloak - 如何申请具有自定义生命周期的令牌?

时间:2018-01-17 10:47:30

标签: jwt openid-connect keycloak

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

在阅读了Keycloak的源代码后,似乎无法在运行时询问特定的生命周期(版本3.4.2.Final)。

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

当在Keycloak中部署此JAR文件时,您可以在运行时请求给定的生命周期。例如: $ 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