keycloak存到cookie中的值

  • AUTH_SESSION_ID
  • KEYCLOAK_IDENTITY
  • KEYCLOAK_SESSION

AUTH_SESSION_ID

用户的当前session_state,它是会话级的,关闭浏览器就没了

KEYCLOAK_IDENTITY

它是用户跨端登录的基础,它也是一个jwt串,解析后是这样的结果,用户在当前端没有登录时,会跳到kc认证页,当发现cookie里的kc域下有这个KEYCLOAK_IDENTITY,会使用这个session_state进行认证,没有这个键,KC认证不能完成。

{
"exp": 1682659005,
"iat": 1680067005,
"jti": "d655a51e-f363-43cf-9f3e-1be8c4f7f082",
"iss": "https://finalcas.pkulaw.com/auth/realms/fabao",
"sub": "347c9e9e-076c-45e3-be74-c482fffcc6e5",
"typ": "Serialized-ID",
"session_state": "4b020044-d273-41c6-9cea-c9ea1b0814f7",
"state_checker": "SGniuhvr-FbQ7aznFTiTDIi2Gt4CKev7DI3vLNvJufo"
}

注意:如果浏览器的cookie里的KEYCLOAK_IDENTITY丢失了,会导致KC出现无法登录的问题,解决方法只能是清除浏览器里的AUTH_SESSION_ID和KEYCLOAK_SESSION,注意还有后缀为LEGACY的键值.

KEYCLOAK_SESSION

当你可算让KC记住你的登录状态,这时KC会在cookie中生成KEYCLOAK_SESSION,它的值默认与AUTH_SESSION_ID相同,当是一个包含过期时间的cookie,浏览器关闭后它依然保持,直到你在KC记住我中配置的过期时间。

假设还有第2个、第3个应用,在keycloak的相同的realm中注册了各自的client,我们在访问第2个、第3个应用的时候,也会跳转到keycloak登录页面(带上各自的client_id, redirect_url),但是就像上面的现象一样,我们的keycloak登录页对应的domain/path中有那3个cookie值AUTH_SESSION_ID,KEYCLOAK_IDENTITY和KEYCLOAK_SESSION, 这样就会自动跳转到我们应用的界面,无需填写keycloak登录的账号密码,并且能够返回授权码code,这就算登录成功了,登录成功之后,后续的操作就是我们再利用这个授权码code和client_secret访问keycloak去获取access token,这就是Oauth2.0的授权码模式。

sesssion_state

以上三个被存储在客户端浏览器里的键值( AUTH_SESSION_ID, KEYCLOAK_IDENTITY,KEYCLOAK_SESSION)都有对session_state的存储,只不过,我们存储的有效期不同,AUTH_SESSION_ID是会话级,后两个是与KC后台配置的记住我中的refresh_token有效期相同的,即SSO Session Idle, SSO Session Max,Client Session Idle,Client Session Max四个配置,谁小使用谁。

  • 当session_state达到这个refresh_token的超时时间+access_token超时时间后,它会被删除
  • 当用户进行登出操作后,它会被删除
  • 如下配置,用户在3+2分钟后PM 02:22:17时,它的 会话将被删除(回收)





    在02:22:17 PM时,这个会话将被回收,同时这个用户在前端也会从新去登录页认证

keyclaok~keycloak存到cookie中的值和session_state的更多相关文章

  1. 从cookie中取值$.cookie()

    从cookie中取值: var userid = $.cookie("remoteuserid");例子: function delUser() {     var table = ...

  2. 关于jsonp跨域过程中 cookie中的值一直为null的原因

    今天技术交流群里的小伙伴一直被一个问题而困扰,就是写入cookie里面的值 再次进行请求时 cookie 就为空了 他被问题纠结了一天  我也好奇了一天 终于在快下班的时候 他解决掉了 下面我来收一个 ...

  3. 将用户信息保存到Cookie中

    /** * 把用户保存到Cookie * * @param request * @param response * @param member */ private void rememberPwdA ...

  4. 购物车存到cookie

    为什么不存session? 首先,session存在时间限制,会定期清空的,而cookie如果不主动清或者设置定期则不会清楚: session存放在服务器端,cookie存放在客户端浏览器. 购物车存 ...

  5. Cookie中存放数据l加密解密的算法

    public class CookieUtil { /** * * @param response HttpServletResponse类型的响应 * @param cookie 要设置httpOn ...

  6. MOOC(11)- 获取cookie后存到json中

    获取cookie后转成字典格式 把字典格式cookie存到json数据中 需要在表格中写好关键字,判断是否写cookie.是否读cookie 在需要用cookie的时候根据键去json中取值 # 1. ...

  7. js获取cookie中存储的值

    最近看了试卷题目发现自己会的十分的匮乏, 第一题就把自己难住了,知道有这个东西,但是实际上没有操作过. ========================================= cookie ...

  8. 监听页面中的某个div的滚动事件,并将其滚动距离保存到cookie

    在html中,写一个id为type的div: <div class="type" id="type"></div> css: .type ...

  9. Loadrunner在post请求的cookie中插入其它多个值

    有一个商城,提交订单的时候,需要在post请求的cookie中set一个code码,便于防刷 tijiao() { lr_think_time(); web_reg_save_param(" ...

  10. cookie中 防止重复存值 (可用于历史记录等)

    function makeCookie($key,$val){ // 查看cookie中是否已经存过键为history_ids if(Cookie::has($key)){ // 已经存过了 $jso ...

随机推荐

  1. vue项目中axios跨域设置

    最近项目中遇到一个问题,测试环境和线上环境需要调同一个接口(接口地址是线上的),本地开发的时候遇到了跨域的问题,刚开始用了fetch解决的,代码如下 方法一 step1:安装包node-fetch,然 ...

  2. 学Java的第5天,今天做了个双色球系统

    今天是学JAVA的第5天,刚刚把方法学完,然后就在这做黑马的题. 用了一个多小时时间,把他的 这些题都做完了 但是最后一道题,这个双色球系统我感觉挺有意思的 我看到这个题,分析后感觉需要4种方法: 1 ...

  3. redis 常用指令

    redis指令有些相似,记忆起来不太容易,在此做一下整理 序号 类型 指令 参数 作用 例子 1 string set key value 存储一个 string 类型的值 set a aa 2 st ...

  4. centos7查看ip地址

    centos7查看ip地址 1.centos7进入终端 安装的centos7虚拟机(无图形界面):输入账号密码进入centos7 2.命令行输入  ip addr 查看 ip地址

  5. 基于C语言的小学生四则运算出题器

    一.实验目的以及项目来源: 目的: 1.帮助老师产出随机的海量四则运算符的运算题目. 2.每次题目的产出均为随机,增强同学的四则运算能力. 项目来源: 项目来源于软件开发与创新课程的结对编程,对100 ...

  6. maven本地仓库有相应的依赖,依旧会从远程仓库拉取问题的原因及解决

    请打开你自己的本地仓库,对应依赖路径下的_remote.repositories文件.如果是从远程仓库拉取的,这里一般是显示这个: junit-4.12.jar>alimaven= junit- ...

  7. Mysql5.7的安装与卸载与数据迁移

    Mysql5.7的安装与卸载 安装: 1.安装的时候 只选择安装 server即可 2.安装过程中,一定要重新选择安装路径和各个日志的路径,将来会非常大,不适合存在系统盘下面 3.安装时,取消MySQ ...

  8. 将spring boot项目打包成jar包

    在spring boot项目的pom文件中加入 <packaging>jar</packaging> 生成jar包 文件右键Open In Explorer找到文件所在位置 可 ...

  9. junit单元测试踩过的坑

    1.测试方法不能直接获取到系统初始化的配置信息,需要专门读取 2.单元测试多线程子线程不执行,不会像主线程一样等待子线程退出而退出, 会直接退出. . https://blog.csdn.net/yu ...

  10. liunx服务器搭建jenkins环境

    服务器搭建jenkins 持续集成环境(1)-Jenkins安装 1)安装JDK Jenkins需要依赖JDK,所以先安装JDK1.8 yum install java-1.8.0-openjdk* ...