keycloak中对接oidc协议时设置prompt=login

prompt=login 是 OIDC(OpenID Connect)协议 中的一个登录请求参数,它的作用是 强制用户重新认证,即使浏览器或 SSO 中已经存在有效的会话。

具体解释如下:


1️⃣ 基本作用

  • 默认情况下,如果用户已经在 Keycloak 或第三方 SSO 上有有效会话:

    • 浏览器访问应用时,Keycloak 会自动使用现有 session 登录。
    • 用户不会看到登录页面,直接进入应用。
  • 当你在登录请求中加上 prompt=login:

    • Keycloak 会忽略现有的 session。
    • 强制弹出登录页面,让用户重新输入用户名和密码。
    • 确保不会自动使用浏览器里的 SSO 会话。

2️⃣ 示例 URL

text 复制代码
https://<keycloak-server>/realms/<realm>/protocol/openid-connect/auth?
client_id=<client_id>
&redirect_uri=<redirect_uri>
&response_type=code
&scope=openid
&prompt=login
  • client_id:应用注册的客户端 ID
  • redirect_uri:登录成功后回调地址
  • response_type=code:使用授权码模式
  • scope=openid:必需的 OIDC scope
  • prompt=login:强制重新认证

3️⃣ 在你的场景中的作用

在你遇到的问题里:

  • 用户登出后仍然直接进入系统首页,原因是 浏览器或 SSO session 没有清理。

  • 如果登录请求加 prompt=login:

    • 即使浏览器中有旧的 session,也会弹出登录页面。
    • 避免了必须关闭浏览器才能重新登录的情况。

💡 核心总结:

  • 默认行为:已有 session → 自动登录
  • 加 prompt=login:忽略 session → 强制输入凭证
相关推荐
天河归来9 小时前
第三方接口不稳定,如何让核心任务继续完成
java·大数据
Knight_AL9 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
砚底藏山河11 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
知已难寻11 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
猿究院_夏燊11 小时前
MySQL 的四种隔离级别
java·数据库·mysql
huainingning12 小时前
Windows syslog日志服务器搭建与模拟器对接
运维·服务器·智能路由器
say_fall12 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
码流子12 小时前
移动收费怎么做?手持终端+App+收费中心的架构实践
java·开发语言·架构
霸道流氓气质12 小时前
AI 流式对话与实时聊天平台:SSE 解码竞态、有状态会话隔离与背压取消的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
云创智城-yuncitys12 小时前
YunParking 4.0:JDK 17 与 Spring Boot 3.2 的停车云升级
java·开发语言·spring boot