撤销Keycloak访问令牌

时间:2020-06-10 08:51:03

标签: node.js reactjs keycloak keycloak-rest-api keycloak-nodejs-connect

我正在使用Keycloak来保护我的React前端和node.js后端。这些客户端使用基于角色的授权来保护。

我的前端应用程序在Keycloak中注册为公共客户端,在后端注册为仅承载客户端。当用户登录到前端时,我正在获取该特定用户的访问令牌,并且正在使用该访问令牌来调用后端api层。

当用户从前端注销时,我正在使用keycloak对象注销方法从Keycloak清除该特定用户的前端客户端会话。一切正常,用户正在注销并重定向到Keycloak登录页面。

但是问题是我仍然可以使用该注销用户的访问令牌来调用后端api。即使用户注销,访问令牌仍然有效。

我尝试了此端点来撤消用户访问令牌。但是没用 / auth / admin / realms // users /

有没有办法撤销Keycloak中特定用户的访问令牌?

2 个答案:

答案 0 :(得分:2)

我认为您只能撤销会话,而不能发出访问令牌。因此,唯一的解决方案是选择一个非常短的访问令牌寿命与静默刷新结合使用,因此可用性仍然很好,会话撤销后的最大访问时间等于或小于令牌寿命。

编辑:有一个official guide about how to handle compromised tokens。他们没有提及如何撤消单个访问令牌,因此没有任何记录的方法。但是,您可以通过上述“ not_before”方式撤销所有已发布的访问密钥。

答案 1 :(得分:1)

您可以调用以下端点以使用帖子撤销访问令牌

{serverName}/auth/realms/{realmName}/protocol/openid-connect/revoke