问题描述
我使用Keyloak来保护我的reaction前端和node.js后端。这些客户端使用基于角色的授权进行保护。
我的前端应用程序在Keyshaak中注册为公共客户端,后端注册为仅承载客户端。当用户登录到前端时,我将获取该特定用户的访问令牌,并使用该访问令牌来调用后端API层。当用户从前端注销时,我将使用Keyshaak对象注销方法从Keyloak中清除该特定用户的前端客户端会话。现在工作正常,用户正在注销并重定向到Keyloak登录页面。
但问题是,我仍然可以使用该注销用户的访问令牌来调用后端API。即使用户注销,访问令牌仍有效。
我尝试使用此终结点来撤消用户访问令牌。但没有奏效 /auth/admin/realms//用户/
有没有办法在Keyloak中吊销特定用户的访问令牌?
推荐答案
我认为您只能吊销会话,但不能颁发访问令牌。因此,唯一的解决方案是选择非常短的访问令牌寿命,并结合静默刷新,这样可用性仍然很好,会话撤销后的最大访问时间等于或小于令牌寿命。
编辑:有official guide about how to handle compromised tokens。它们没有提到如何撤销单个访问令牌,因此没有记录的方法来执行此操作。但是,您可以通过所述的"NOT_BEFORE"方式撤销所有已颁发的访问密钥。