spring-boot - 如何阻止特定客户端的访问并在管理控制台中撤销其颁发的令牌
问题描述
我使用以下依赖项使用 spring boot 和 keycloak 实现了授权服务器:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>${resteasy.version}</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-dependencies-server-all</artifactId>
<version>${keycloak.version}</version>
<type>pom</type>
</dependency>
我在 keycloak 管理控制台中定义了一个客户端以具有client_credentials授权流程。一切正常,客户可以获得他的 access_token 和 refresh_token。
现在,我希望能够撤销这个客户颁发的令牌并阻止他获得新的令牌。我如何以及在哪里可以在 keycloak 管理控制台中做到这一点?
解决方案
Access Tokens
不能被撤销(至少在Keycloak中)。它们被设计为短暂的,将它们的到期时间设置在 1 到 3 分钟之间是非常好的做法。
你唯一能做的就是:
- 逐出特定用户的所有会话
- 禁用/拒绝对该特定用户的访问(这样他就不会获得新的令牌)
- 更改特定客户端的密钥或重新生成秘密凭据(这样就无法进行身份验证,也不会发出新的令牌)
- 对所有令牌使用not-before 推送策略或禁用/删除客户端或应用程序
此处提供更多操作和详细信息:https ://www.keycloak.org/docs/latest/server_admin/index.html#compromised-access-and-refresh-tokens
“令牌生命周期”和“撤销访问”主题在此部分介绍:
推荐阅读
- java - 在 Spring Boot 中处理异常的最佳方法是什么?
- metrics - 用于监视的 Azure CDN 指标
- docker - 通过 AWS-Greengrass 连接器服务部署 Docker 映像时面临的问题
- bash - 在 bash 脚本中获取传递参数的错误值到函数
- javascript - 如何使用javascript将每个句子的第一个字符大写一个段落?
- mongodb - 在pentaho PDI的单个字段中选择mongodb aray元素
- twilio - Twilio Video API 向所有参与者发出自定义事件 (javascript)
- discord.py - Discord.py eval 命令:IndentationError:期望缩进块
- java - 在 mapStore 中动态创建地图
- node.js - 使用mongoose查询MongoDB内部数组的状态