找回密码
 立即注册
首页 业界区 业界 keycloak~JWT各字段说明及扩展字段的方法

keycloak~JWT各字段说明及扩展字段的方法

归筠溪 2025-6-6 08:43:57
jwt扩展字段介绍

为了实现业务的定制化需求和开发人员使用的便利,对kc的JWT进行了扩展,这个扩展字段在解析JWT之后都可以看到。
jwt的payload
  1. {
  2.   "exp": 1675329802,
  3.   "iat": 1675329622,
  4.   "jti": "2a80e925-b9ce-464f-822d-5c801ff4e8a0",
  5.   "iss": "https://xxx.xxx.com/auth/realms/xxx",
  6.   "aud": ["case", "realm-management", "account"],
  7.   "sub": "d21a5ec8-30c5-4db6-a26a-17ac4b3fcfd4",
  8.   "typ": "Bearer",
  9.   "azp": "democlient",
  10.   "session_state": "c6b5fdbc-38fd-45d7-bde1-de7cc18837d3",
  11.   "acr": "1",
  12.   "allowed-origins": ["*"],
  13.   "realm_access": {
  14.     "roles": ["manage-users", "query-realms", "query-clients", "query-users"]
  15.   },
  16.   "resource_access": {
  17.     "realm-management": {
  18.       "roles": ["view-realm", "manage-authorization", "manage-clients", "query-groups"]
  19.     },
  20.     "account": {
  21.       "roles": ["manage-account", "view-applications"]
  22.     }
  23.   },
  24.   "scope": "roles my-application-scope extension-roles email profile",
  25.   "phoneNumber": "13521972991",
  26.   "email_verified": true,
  27.   "loginType": "password",
  28.   "nickname": "张三",
  29.   "isGroupUser": 1,
  30.   "extension_roles": {
  31.     "weixin": ["product"]
  32.   },
  33.   "preferred_username": "test"
  34. }
复制代码
公用字段


  • exp token过期时间戳
  • iat token生成时间戳
  • jti token的唯一身份标识
  • iss token的发行机制,kc中的域,例如:https://cas.pkulaw.com/auth/realms/fabao
  • aud 授权到的客户端
  • sub 当前用户ID
  • typ 认证方式
  • azp 当前客户端client_id
  • session_state 当前会话id,浏览器中的AUTH_SESSION_ID和AUTH_SESSION_ID_LEGACY
  • acr 如果clientSession通过cookie (SSO)进行身份验证,则使用0,否则为1
  • allowed-origins 允许哪种域名使用我们的token
  • realm_access 域的权限
  • resource_access 客户端(资源)权限,kc允许你为用户依照客户端去授权
  • scope 客户端模板,它将一类jwt中的属性进行分类,通过这个scope模块去渲染你的jwt字段
个性化字段

用户属性:是user_attribute表,在kc管理平台中,可以通过用户详情-属性[attributes]查看


  • phoneNumber 用户手机号
  • email_verified 是否验证了邮箱
  • loginType 登录方式【password,weixin,carsi,wechat-work】
  • nickname 用户昵称【如果用户属性nickname时就用它;否则用户名以wx或者phone开头,并且用户属性手机号不为空,就用手机号;否则使用用户名username】
  • isGroupUser 是否为组管理员【1是、0否】
  • extension_roles.weixin 扩展角色中的微信角色
  • preferred_username kc中的用户名username
为客户端配置自定义属性


  • 通过客户端模板,去添加一个模板,通过mappers将多个相关的属性添加到这个模板里

  • 选择指定客户端-》客户端模板-》添加已有的模板
    2.png


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册