首页 > 解决方案 > 无法使用 Keycloak OpenID 日志记录系统以隐身模式登录本地主机上的 Angular 10+ webapp

问题描述

在 http://localhost:4202 中尝试登录我的应用程序时,在隐身模式下使用 Chrome/Opera/Firefox 浏览器时,我的 Keycloak 服务器出现错误:

Request URL: https://auth-tst.somedomain.com/auth/realms/TEST/protocol/openid-connect/token
Request Method: POST
Status Code: 400 Bad Request
Remote Address: [SOME_IP]:443
Referrer Policy: strict-origin-when-cross-origin

回应是:

{
  "error":"invalid_grant",
  "error_description":"Invalid refresh token"
}

因为有效载荷是:

grant_type=refresh_token&refresh_token=undefined&client_id=TEST

注意refresh_token参数 - 它是未定义的,因此在成功登录到 Keycloak 驱动的 OAuth 后,令牌可能在重定向回本地主机上的应用程序期间丢失。

重要的是要知道:日志记录在最新的 Edge 浏览器上以隐身模式工作。

我知道这是因为“在私有模式下阻止第三方 cookie”选项设置为 true。如果我更改为“允许所有 cookie”,则登录工作正常。

但事实是,这不是最佳解决方案,因为它需要用户操作浏览器设置。

问题是,是否可以通过 Angular 应用程序中的“阻止所有第三方 cookie”?

或者唯一的方法是checkLoginIframe在 Keycloak 前端配置中使用标志?

标签: angularsingle-sign-onkeycloakincognito-mode

解决方案


推荐阅读