spring-boot - 如何在管理控制台中阻止特定客户端的访问并撤销其颁发的 token

标签 spring-boot authorization keycloak access-token refresh-token

我使用以下依赖项通过 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。

现在,我希望能够撤销该客户端颁发的 token ,并阻止他获得新的 token 。我如何以及在哪里可以在 keycloak 管理控制台中执行此操作?

最佳答案

访问 token 无法撤销(至少在Keycloak中)。它们被设计为短暂的,最好将它们的过期时间设置在 1 到 3 分钟之间。

你唯一能做的就是:

  • 逐出特定用户的所有 session
  • 禁用/拒绝访问该特定用户(这样他就不会获得新的 token )
  • 更改 key 或重新生成特定客户端的 secret 凭证(这样就无法进行身份验证,也不会颁发新 token )
  • 对所有 token 使用推送前策略或禁用/删除客户端或应用程序

更多操作和详细信息可在此处获取:https://www.keycloak.org/docs/latest/server_admin/index.html#compromised-access-and-refresh-tokens

token 生命周期”和“撤销访问”主题部分包含在此处:

关于spring-boot - 如何在管理控制台中阻止特定客户端的访问并撤销其颁发的 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62912726/

相关文章:

oauth-2.0 - Oauth2_proxy 与 Keycloak : getting "invalid_token" with/userinfo API

java - Spring Boot Mongo Upsert 数组中的元素

haskell - YesodAuthEmail 无法推断出 m ~ HandlerFor site0

java - Docker 中的 Keycloak 日志文件

authentication - SSH 端口隧道授权

authorization - Keycloak Spring UMA 被拒绝

Keycloak 一次性使用 token

java - Spring Boot Autowiring null

java - 带有 client_credentials 错误的 Oaut2RestTemplate(不允许匿名)

java - Hibernate、Postgre/MySQL 差异