首页 > 解决方案 > 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 上的登录页面。

标签: angularkeycloakopenid-connectidentity-management

解决方案


keycloak.init在您的呼叫周围抛出一个 try/catch,因为init在这种情况下会引发错误。在 catch 内部调用 keycloak.logout() 来清除状态。


推荐阅读