首页 > 其他分享 >keycloak~JWT各字段说明及扩展字段的方法

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

时间:2023-02-03 10:22:16浏览次数:67  
标签:kc realm roles 各字段 JWT token 客户端 模板 keycloak

jwt扩展字段介绍

为了实现业务的定制化需求和开发人员使用的便利,对kc的JWT进行了扩展,这个扩展字段在解析JWT之后都可以看到。

jwt的payload

{
  "exp": 1675329802,
  "iat": 1675329622,
  "jti": "2a80e925-b9ce-464f-822d-5c801ff4e8a0",
  "iss": "https://xxx.xxx.com/auth/realms/xxx",
  "aud": ["case", "realm-management", "account"],
  "sub": "d21a5ec8-30c5-4db6-a26a-17ac4b3fcfd4",
  "typ": "Bearer",
  "azp": "democlient",
  "session_state": "c6b5fdbc-38fd-45d7-bde1-de7cc18837d3",
  "acr": "1",
  "allowed-origins": ["*"],
  "realm_access": {
    "roles": ["manage-users", "query-realms", "query-clients", "query-users"]
  },
  "resource_access": {
    "realm-management": {
      "roles": ["view-realm", "manage-authorization", "manage-clients", "query-groups"]
    },
    "account": {
      "roles": ["manage-account", "view-applications"]
    }
  },
  "scope": "roles my-application-scope extension-roles email profile",
  "phoneNumber": "13521972991",
  "email_verified": true,
  "loginType": "password",
  "nickname": "张三",
  "isGroupUser": 1,
  "extension_roles": {
    "weixin": ["product"]
  },
  "preferred_username": "test"
}

公用字段

  • 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

为客户端配置自定义属性

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

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

标签:kc,realm,roles,各字段,JWT,token,客户端,模板,keycloak
From: https://www.cnblogs.com/lori/p/17088298.html

相关文章

  • SpringBoot框架下shiro与jwt的结合的用户登录
    写了一次使用shiro和jwt的用户登录(没有涉及到用户权限的控制),下面进行很简单的技术总结之前使用的是Redis中保存用户信息,使用uuid-用户信息的键值对来判断用户......
  • python jwt
    jwt->jsonwebtoken一般用于前后端分离项目的用户认证。传统校验需要把token保存在服务端。而jwt不会保存在服务端,通过客户端给的token和算法进行验证。jwt包括三段......
  • Spring Security、Oauth2与JWT
    SpringSecurity、Oauth2与JWT安全框架基础认证、会话与授权用户身份认证:用户身份认证即用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问。常见的......
  • 【转载】jwt认证
     1、什么是JWT通俗地说,JWT的本质就是一个字符串,它是将用户信息保存到一个Json字符串中,然后进行编码后得到一个JWTtoken,并且这个JWTtoken带有签名信息,接收后可以校验是......
  • JWT全面解读、详细使用步骤
    前言现在,JSONWebTokens(JWT)是非常流行的。尤其是Web开发领域。流行安全稳定易用支持JSON所有这些因素,令JWT 名声大振。JSONWebToken(JWT)是目前最流行......
  • Django django-rest-framework-simplejwt
    Django(75)django-rest-framework-simplejwt「建议收藏」发布于2022-09-1611:56:13阅读 2440 大家好,又见面了,我是你们的朋友全栈君。 前言由于之前我们一......
  • Laravel Composer could not install tymon/jwt-auth
    Problem1-Rootcomposer.jsonrequirestymon/jwt-auth^0.5.12->satisfiablebytymon/jwt-auth[0.5.12].-tymon/jwt-auth0.5.12requiresilluminate/......
  • 前后端分离项目知识汇总(微信扫码登录,手机验证码登录,JWT)
    整合篇二​​前言​​​​整合JWT​​​​用户登录业务介绍​​​​单一服务器模式​​​​SSO(singlesignon)模式​​​​SSO登录三种常见的方式​​​​传统用户身份验......
  • SpringBoot集成JWT实现token验证
    一、简介Jwt全称是:jsonwebtoken。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。优点简洁......
  • 使用JWT
    JWT用来验证访问者身份,需要以下内容:1、一个密钥,32位,越复杂越好,我用两个GUID去掉-后拼在一起。2、一个json格式的配置文件,里面保存密钥和过期时间。"JWTSetting":{......