keycloak~登录步骤页login-actions/authenticate出现无限次302跳转的原因与解决

问题出现的前提

  • keycloak通过k8s部署,并进行了集群部署,共2个节点
  • 通过域名解析后,直接到外网LB,在LB上配置了k8s-ingress的IP,端口是80和443
  • 在keycloak应用的ingress配置中,对域名进行了keycloak服务的绑定

问题的描述

  • 有时间无法完成登录,点登录后,刷新了一次登录页,未完成登录行为
  • 有时在登录时,出现死循环,反复302到login-actions/authenticate,keycloak日志中显示“会话失效”,或者可以理解为,“你使用了无效的会话session_code”

问题解决过程

  • 如果是单节点不会有这个问题
  • 如果是多节点部署,需要在LB上添加会话保持
  • 如果是容器化部署的情况下,如果k8s-ingress进行负载,那么,除了在LB上添加了会话保持的,还需要为ingress添加会话保持,代码如下:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace: default
  name: my-app
  annotations:
    nginx.ingress.kubernetes.io/affinity: "cookie"
    nginx.ingress.kubernetes.io/session-cookie-name: "route"
    nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
    nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
    nginx.ingress.kubernetes.io/proxy-buffer-size: "16k" #缓冲区大小
    nginx.ingress.kubernetes.io/proxy-buffers-number: "8" #缓冲区数据,不加它参数多时返
  • 如果你使用rancher部署应用,直接在应用对应的负载均衡上添加即可
posted @   张占岭  阅读(384)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2017-11-23 jenkins~管道Pipeline的使用,再见jenkinsUI
2016-11-23 大叔最新课程~EF核心技术剖析
2016-11-23 Lind.DDD.LindMQ的一些想法
2015-11-23 Lind.DDD.ConfigConstants统一管理系统配置
2012-11-23 说说程序员应该知道的术语(中文+英文)
2011-11-23 LINQ的Distinct总结
点击右上角即可分享
微信分享提示