You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Keycloak中创建用户专属个人访问令牌?

在Keycloak中实现个人访问令牌(PAT)

当然可以,Keycloak完全支持创建类似GitHub、GitLab的个人访问令牌(PAT),下面是几种实用的实现方案,覆盖从简单快速到精细权限控制的不同需求:

方案一:用内置功能快速生成(适合基础需求)

Keycloak自带的账户管理控制台支持用户自行生成PAT,步骤很简单:

  1. 管理员端先配置客户端:
    • 登录Keycloak管理控制台,找到目标客户端,进入Settings标签页,开启Direct Access Grants Enabled选项。
  2. 用户自行生成令牌:
    • 用户登录自己的账户控制台(路径一般为/realms/{你的Realm名}/account)。
    • 找到Security下的Personal Access Tokens(部分版本可能显示为Tokens)。
    • 点击「Create Token」,设置令牌有效期、可选的权限范围,确认后就能拿到专属访问令牌。
    • 用这个令牌做身份验证时,在请求Header里带上Authorization: Bearer {生成的令牌}即可。

方案二:基于UMA实现精细权限控制(适合复杂场景)

如果需要让令牌只能访问特定资源,用Keycloak的User Managed Access(UMA)功能最合适:

  1. 开启UMA:
    • 在管理控制台的目标Realm里,进入Realm Settings,开启UMA Enabled。
  2. 配置资源服务器:
    • 新建一个客户端,类型选Resource Server,同时开启Authorization Enabled。
  3. 用户生成带权限的令牌:
    • 用户登录账户控制台,进入Resources页面创建自己的资源并设置权限规则。
    • 再到Tokens页面生成绑定了这些资源权限的PAT,这样令牌就只能访问用户指定的资源。

方案三:自定义客户端调用接口生成(完全自主控制)

如果要完全自定义令牌生成的逻辑或流程,可以做一个专用客户端来调用Keycloak的令牌接口:

  1. 新建一个公共客户端(Public Client),开启Direct Access Grants Enabled。
  2. 用户用自己的账号密码调用令牌接口:
    发送POST请求到/realms/{你的Realm名}/protocol/openid-connect/token,参数如下:
    grant_type=password
    client_id={你的客户端ID}
    username={用户账号}
    password={用户密码}
    scope={可选的权限范围,比如openid}
    
    接口返回的access_token就是用户的PAT,用户可以保存下来重复使用,直到过期。

注意点

  • 令牌的默认有效期可以在Realm的Realm Settings -> Tokens里全局配置,生成令牌时也能单独设置更短/更长的有效期。
  • 建议开启刷新令牌功能,用户可以用返回的refresh_token获取新的访问令牌,不用每次都重新登录。
  • 用户随时可以在账户控制台的Tokens页面撤销已生成的令牌,避免令牌泄露带来风险。

内容的提问来源于stack exchange,提问作者Michael Wurster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 07:06:22