问题标签 [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.
node.js - 我什么时候应该使用 Keycloak Gatekeeper?
我对这种身份验证的东西真的很陌生。因此,据我了解,Keycloak 用于身份验证和授权,要使用它,您需要所谓的适配器。在谷歌搜索并阅读他们的文档(https://www.keycloak.org/docs/latest/securing_apps/index.html)之后,我了解到 Keycloak Gatekeeper 是一个通用适配器。
所以我的问题是:
- Keycloak Gatekeeper 是否仅在使用 Keycloak 未提供适配器的语言进行开发时使用?
- 如果我要使用 Node.js 制作应用程序,使用提供的 Node.js 适配器而不是 Keycloak Gatekeeper 对我来说更好吗?
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 的预期行为吗?
docker - Docker 命令从 Docker run 成功运行,但在 Dockerfile 中使用 CMD 时没有
我将 Bitnami/Keycloak-Gatekeeper Docker 映像包装在 Dockerfile 中,并尝试运行:
这给出了一个错误:
但是,当我使用 docker run 命令运行它时,一切都按预期执行。
为什么这直接通过 docker run 工作,而不是在 Dockerfile 中工作?
如何解决这个问题,以便我可以使用 Dockerfile 运行?
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 接收它们?
这是我的架构的图片:
谢谢大家的帮助
keycloak-gatekeeper - Keycloak Gatekeeper 7.0.0 多客户端 ID 跳过客户端 ID 选项
在旧版本的 Keycloak Gatekeeper 中,有一个选项
我正在使用 Keycloak Gatekeeper 7.0.0,该选项已被删除。我的问题是,我正在使用具有多个客户端 ID 的微服务。但据我了解,网守仅支持 1 个客户端 ID。
问题是:如何配置 Gatekeeper 以接受多个客户端 ID 请求?
该文档没有给出任何提示。
有没有人面临同样的问题?
提前致谢!
keycloak - 使用 Keycloak 按 IP 地址查找格式化地址
描述
我正在使用 Keycloak,每当用户登录失败时,我都需要向用户发送有关失败的电子邮件。默认情况下,这些电子邮件确实包含 IP 地址。
有问题的
我需要包含来自该 IP 地址的格式化地址,但我不知道用于重新实现电子邮件的 SPI。
主意
我从 maxmind 发现了这个插件,它可以用来实现 Keycloak SPI。
oauth-2.0 - 如何获取访问令牌中的角色:keycloak
我正在尝试做的事情:
我有一个接受登录凭据的应用程序:用户的用户名和密码。我有一个内部调用 keycloak REST API 的 api:/auth/realms/realmname/protocol/openid-connect/token 并获取该用户的访问令牌。
现在我正在构建另一个 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 端点。但这只是告诉我我提供的访问令牌是有效的。不为此提供角色。换句话说 - 它验证但不授权。
请建议。
谢谢, 阿南德
kubernetes - Traefik + Keycloak Gatekeeper Websocket 认证
我们在 EKS 上部署了一个带有 Traefik Ingress 控制器的微服务。我们有 Keycloak Gatekeeper 作为身份验证的边车。此设置运行良好。
我们希望在我们的微服务中拥有 websocket。现在,问题是 JavaScript 无法在 WebSocket 请求上发送授权标头(或实际上任何标头)。这会导致网守拒绝该请求。
有没有办法解决这个问题?Java keycloak 适配器能够从查询参数中读取 access_token 并在此基础上进行身份验证。但这似乎与看门人有关
- 可以以某种方式使用 Traefik 从查询参数中读取 access_token 并放入 Auth 标头。
- 网守中是否有任何设置?可以以某种方式增强看门人以处理这种情况吗?
keycloak - Keycloak:发送电子邮件时如何添加抄送或密送?
要求:
当通过keycloak发送电子邮件时,我们如何添加cc或bcc?
问题:
当邀请用户使用 keycloak 进行注册时,会发送邀请邮件。但是有的情况下,邀请是发不出去的,所以我打算在邀请邮件里加上cc或者bcc。
任何人都可以提供解决方案我如何将 cc 或 bcc 添加到 keycloak 集成电子邮件?
azure - 用于根据 IDP 检查用户电子邮件并将其带到该 IDP 的 keycloak 流程
我们有一个应用程序,它在 keycloak 数据库或 Azure Active Directory 中有用户,Azure AD 被联合为 Open ID Connect IDP。
这一切都很好,但问题是它要求我们的用户选择通过 Keycloak 或 Azure AD 登录。用户不经常登录,用户更容易不必记住他们是在 Azure AD 中还是在 keycloak 中。
所以我们想要的登录流程是:
- 提示用户输入电子邮件的初始页面。
- 根据用户注册的位置,流程中的下一页将是 Keycloak 登录页面或 Azure AD 登录。
这种类型的流程在 Keycloak 中是否可行,或者我们是否需要在 Keycloak 之外执行此操作,然后在 keycloak 中引导他们一个合适的客户端。