问题标签 [keycloak-gatekeeper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
206 浏览

node.js - 我什么时候应该使用 Keycloak Gatekeeper?

我对这种身份验证的东西真的很陌生。因此,据我了解,Keycloak 用于身份验证和授权,要使用它,您需要所谓的适配器。在谷歌搜索并阅读他们的文档(https://www.keycloak.org/docs/latest/securing_apps/index.html)之后,我了解到 Keycloak Gatekeeper 是一个通用适配器。

所以我的问题是:

  1. Keycloak Gatekeeper 是否仅在使用 Keycloak 未提供适配器的语言进行开发时使用?
  2. 如果我要使用 Node.js 制作应用程序,使用提供的 Node.js 适配器而不是 Keycloak Gatekeeper 对我来说更好吗?
0 投票
0 回答
362 浏览

realm - Keyclock-gatekeeper/louketo-proxy 事件未立即传播到所有客户端

我使用 Keycloak 作为 IAM,并有客户端“alertmanager”和“Nginx”与 Keycloak-gatekeeper/louketo-proxy 一起作为我的 K8s 集群中的 sidecar 运行。用户能够完美登录,但在注销时会遇到一些问题。

当我尝试从 Keycloak 管理部分的“会话”下“全部注销”时。我收到此错误,并且网守/代理同时收到来自 Keycloack 的呼叫(我正在检查实时日志),但由于此请求未经身份验证,因此请求失败。那么,我们如何在这里将keycloak的IP地址列入白名单呢?

在此处输入图像描述

此外,当一个客户端(应用程序)通过在浏览器中点击 application/ oauth/logout执行注销时,我们如何将注销从浏览器传播到所有客户端?之前在同一浏览器中也通过 SSO 登录的另一个应用程序未注销,并且令牌仍然保留令牌(通过 application2/oauth/token 检查),两个客户端(应用程序)都来自同一领域。

当代理要求 keycloak 刷新令牌时,在不同客户端之间刷新最多需要 5 分钟。

当我从特定组中添加/删除用户时,让我们说“devops”,并且代理/网守配置为授予用户在“devops”组中存在的访问权限。因此,如果我在“devops”组中添加某人,最多需要 5 分钟来反映这一点,并且用户可以开始使用相关的应用程序。但是,当我从组中删除用户时。他们仍然可以享受“devops”组的访问最多 5 分钟,这是一个安全问题!

有没有办法将事件从 Keycloack 立即传播到所有客户端。这是 Keyclock 的预期行为吗?

0 投票
1 回答
107 浏览

docker - Docker 命令从 Docker run 成功运行,但在 Dockerfile 中使用 CMD 时没有

我将 Bitnami/Keycloak-Gatekeeper Docker 映像包装在 Dockerfile 中,并尝试运行:

这给出了一个错误:

但是,当我使用 docker run 命令运行它时,一切都按预期执行。

为什么这直接通过 docker run 工作,而不是在 Dockerfile 中工作?

如何解决这个问题,以便我可以使用 Dockerfile 运行?

0 投票
0 回答
204 浏览

angular - 在 Angular 应用程序中保留标题

我正在开发一种架构,其中我的 Angular 前端连接到 Spring Boot 后端,并且前端可以通过 NGINX 访问。

在访问我的应用程序之前,必须对用户进行身份验证。

我使用 Keycloak 作为身份管理器,使用 keycloak-gatekeeper 作为代理 oauth,验证用户是否经过身份验证。

成功验证后,网守重定向(并发送带有身份信息的标头,例如:用户名、电子邮件、角色......)到我的前面,这是一个调用 spring boot API 以根据登录的用户检索信息的单个页面和它的作用。

问题是:API 没有收到 Gatekeeper 发送的任何这些标头。

我做了几个测试以知道我在哪里丢失了标头,我发现当我将 Gatekeeper 直接与 API 连接时,API 接收所有标头但是当我在两者之间添加角度应用程序时,后端仅接收标准标头,例如:主机,x-real-ip,x-forwarded-for,访问控制允许来源...)

似乎前面生成了一个新请求 - 带有默认标头 - 到后面并丢失了其他标头。

我如何保留这些标头以便我的 API 接收它们?

这是我的架构的图片:

建筑学

谢谢大家的帮助

0 投票
0 回答
74 浏览

keycloak-gatekeeper - Keycloak Gatekeeper 7.0.0 多客户端 ID 跳过客户端 ID 选项

在旧版本的 Keycloak Gatekeeper 中,有一个选项

我正在使用 Keycloak Gatekeeper 7.0.0,该选项已被删除。我的问题是,我正在使用具有多个客户端 ID 的微服务。但据我了解,网守仅支持 1 个客户端 ID。

问题是:如何配置 Gatekeeper 以接受多个客户端 ID 请求?

该文档没有给出任何提示。

有没有人面临同样的问题?

提前致谢!

0 投票
1 回答
55 浏览

keycloak - 使用 Keycloak 按 IP 地址查找格式化地址

描述

我正在使用 Keycloak,每当用户登录失败时,我都需要向用户发送有关失败的电子邮件。默认情况下,这些电子邮件确实包含 IP 地址。

有问题的

我需要包含来自该 IP 地址的格式化地址,但我不知道用于重新实现电子邮件的 SPI。

主意

从 maxmind 发现了这个插件,它可以用来实现 Keycloak SPI。

0 投票
3 回答
16794 浏览

oauth-2.0 - 如何获取访问令牌中的角色:keycloak

我正在尝试做的事情:

  1. 我有一个接受登录凭据的应用程序:用户的用户名和密码。我有一个内部调用 keycloak REST API 的 api:/auth/realms/realmname/protocol/openid-connect/token 并获取该用户的访问令牌。

  2. 现在我正在构建另一个 REST API 来访问我想要执行以下操作的资源: doSomething(accesstoken, data)

    {

    一个)call keycloak API to validate access token and get roles.

    b)如果角色==经理,流程(数据)

    c) 其他:返回错误信息。

    }

现在,我该怎么做 (a):验证访问令牌并获取与之关联的角色。我知道我们可以这样做:auth/realms/realmname/protocol/openid-connect/userinfo 但这仅提供有关用户的详细信息,例如姓名、电子邮件等,但不显示任何角色。这是我得到的一个例子:

正如所见,它根本没有给出角色。然后,我如何判断此访问令牌具有哪些角色?有趣的是,当我搜索这个时,许多资源都在建议上面的 userinfo 端点。但这只是告诉我我提供的访问令牌是有效的。不为此提供角色。换句话说 - 它验证但不授权。

请建议。

谢谢, 阿南德

0 投票
0 回答
335 浏览

kubernetes - Traefik + Keycloak Gatekeeper Websocket 认证

我们在 EKS 上部署了一个带有 Traefik Ingress 控制器的微服务。我们有 Keycloak Gatekeeper 作为身份验证的边车。此设置运行良好。

我们希望在我们的微服务中拥有 websocket。现在,问题是 JavaScript 无法在 WebSocket 请求上发送授权标头(或实际上任何标头)。这会导致网守拒绝该请求。

有没有办法解决这个问题?Java keycloak 适配器能够从查询参数中读取 access_token 并在此基础上进行身份验证。但这似乎与看门人有关

  1. 可以以某种方式使用 Traefik 从查询参数中读取 access_token 并放入 Auth 标头。
  2. 网守中是否有任何设置?可以以某种方式增强看门人以处理这种情况吗?
0 投票
1 回答
168 浏览

keycloak - Keycloak:发送电子邮件时如何添加抄送或密送?

要求:

当通过keycloak发送电子邮件时,我们如何添加cc或bcc?

问题:

当邀请用户使用 keycloak 进行注册时,会发送邀请邮件。但是有的情况下,邀请是发不出去的,所以我打算在邀请邮件里加上cc或者bcc。

任何人都可以提供解决方案我如何将 cc 或 bcc 添加到 keycloak 集成电子邮件?

0 投票
0 回答
70 浏览

azure - 用于根据 IDP 检查用户电子邮件并将其带到该 IDP 的 keycloak 流程

我们有一个应用程序,它在 keycloak 数据库或 Azure Active Directory 中有用户,Azure AD 被联合为 Open ID Connect IDP。

这一切都很好,但问题是它要求我们的用户选择通过 Keycloak 或 Azure AD 登录。用户不经常登录,用户更容易不必记住他们是在 Azure AD 中还是在 keycloak 中。

所以我们想要的登录流程是:

  1. 提示用户输入电子邮件的初始页面。
  2. 根据用户注册的位置,流程中的下一页将是 Keycloak 登录页面或 Azure AD 登录。

这种类型的流程在 Keycloak 中是否可行,或者我们是否需要在 Keycloak 之外执行此操作,然后在 keycloak 中引导他们一个合适的客户端。