angular - Keycloak 所需操作 - 条款和条件 - 将用户重定向回登录页面的问题(特定于浏览器)
问题描述
我的 Keycloak 版本 - 9.0。应用前端 - Angular 8
我正在启用条款和条件,并将默认值设置为 true。
我已经按照我想要的方式配置了 t&c 页面,当用户输入他们的凭据时它就会出现。接受 t&c 工作正常,它需要用户申请。
但问题是当用户点击拒绝时。 理想情况下,它应该将用户带回 keycloak 登录页面,但它会将用户带到带有空白页面的应用程序页面,并且当您进行页面刷新时,它会将用户带回 Keycloak 登录页面。
问题出在 Safari (13.1.1) 和 Google Chrome (87.0.4) 上,并且在 mozila Firefox (81.0) 上运行良好,它将用户带回登录页面。
这是我在日志中得到的:
WARN [org.keycloak.events](默认任务 3)type=CUSTOM_REQUIRED_ACTION_ERROR,realmId=myrealm,clientId=myclient,userId=userId,ipAddress=myip,error=rejected_by_user,auth_method=openid-connect,custom_required_action=terms_and_conditions,response_type=代码,redirect_uri=https://domain_name/,remember_me=false,code_id=code_id,response_mode=fragment,username=username,authSessionParentId=fb55e9cf-fe78-41f7-bf04-ed4d5867d3f9,authSessionTabId=ecxUmJlMtoo
这里有什么遗漏吗?..为什么特定浏览器的问题..有什么想法吗?请帮忙!。
更新: 我观察到当它在 Mozilla Firefox 中运行时,它仍然在日志中显示上述警告。
更新 2
我已经检查了 Mozilla Firefox 的工作位置 - 在 Cookies 中,我可以看到 AUTH_SESSION_ID 和 KC_RESTART,当我单击拒绝时,auth_session_id 被替换为 OAuth_Token_Request_State,然后我再次看到 AUTH_SESSION_ID 和 KC_RESTART 在将我重定向到登录页面时仍然存在。
但是 Chrome 和 Safari 的情况并非如此。当我单击拒绝时,两个 cookie 都会消失,它会将我带到应用程序 url,而不是返回到 keycloak 上的登录页面。
解决方案
keycloak.init
在您的呼叫周围抛出一个 try/catch,因为init
在这种情况下会引发错误。在 catch 内部调用 keycloak.logout() 来清除状态。
推荐阅读
- viber - 通过 REST API 在 for 循环中发送 Viber 机器人消息多次触发
- java - 在 java 中使用 GZIPOutputStream 或 ZIPOutputStream 时是否可以排除文件和/或目录?
- ios - 内容左对齐 - SwiftUI iOS 14 Widget
- java - 文件中的数字
- parallel-processing - 在 2020 年,在一台计算机上的多个 GPU 上使用 Pytorch 训练模型的最佳方式是什么?
- python - 为什么要创建一个二进制列来指示具有缺失值的记录
- python - 在 python 中打印列表有不同的方法吗?
- neo4j - 计算最短路径neo4j后的节点数
- node.js - 有没有办法查看有多少用户加入了我的不和谐机器人游戏?
- pandas - xarray,用多维坐标索引