问题标签 [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 投票
1 回答
1182 浏览

openid-connect - Keycloak-Gatekeeper 在针对外部 OIDC 提供者进行身份验证时不会填充角色或组

我正在尝试将 keycloak-gatekeeper 设置为 docker 容器前的反向代理,以便为容器提供身份验证和授权。我正在使用 FusionAuth 作为 OIDC 兼容的身份提供者,并且已经设法让 keycloak-getekeeper 使用它,使用授权流程。当我尝试根据他们的角色或组成员身份限制哪些用户可以访问资源时,问题就出现了。

目前,所有请求都被拒绝。当我查看服务器上的日志时,我可以看到以下消息:

据我所知,我拒绝的原因是没有填充角色。我还运行了一个客户端来为用户获取一个 JWT(通过隐式流),它看起来像这样:

由此,我可以看到用户处于正确的角色中。

目前,我对问题出在哪里,或者如何更详细地调试 keycloak-gatekeeper 实例有点不知所措

0 投票
1 回答
977 浏览

keycloak - keycloak 网守不会阻止任何请求

我正在尝试在个人 api: 中使用 keycloak + keycloak-gatekeeper 进行授权api.mydomain.com。到目前为止,我已经完成了:

  1. 在 keycloak 中创建了一个领域MY-REALM,keycloak 的 URL 是https://auth.mydomain.com
  2. confidential client在同一领域中创建了一个Authorization Enabled ONValid redirect URIShttps://api.mydomain.com/ *
  3. 创建了一个用户
  4. 在我的服务器内部https://api.mydomain.com指向 127.0.0.1:5000
  5. 127.0.0.1:5001 是“真正的 API”
  6. 使用此 config.yaml 配置 keycloak-gatekeeper:

现在,如果我在浏览器https://api.mydomain.com中访问,我将被重定向到https://auth.mydomain.com,要求输入用户名和密码。我提供在第 3 点创建的用户,并按预期再次重定向到https://api.mydomain.com。到目前为止,一切都很好。

问题在于授权部分的配置:在 keycloak -> Clients-> <MY-API-CLIENT-ID>-> Authorization->Resources我编辑默认策略以拒绝resource /*中的每个请求,但我可以访问https://api 中的每个资源(URL)。 mydomain.com和以前一样。

我努力了:

  1. 按领域角色限制(只有管理员可以访问特定资源)。
  2. 受范围限制。
  3. 否定策略中的逻辑。
  4. 受客户角色限制。
  5. 祈祷。
  6. 哭。

当然,我已经Evaluate在 keycloak 的 Tab 中尝试了上述所有组合,并且在此处有效地模拟了策略显示DENY

那么我做错了什么?顺便说一句,在每次请求之后,这是来自 keycloak-gatekeeper 的日志:

任何想法将不胜感激。

0 投票
1 回答
1187 浏览

keycloak - keycloak gatekeeper 404 after credentials

I have a backend hello world app, using the following ACLS

causes 404 right after login, with the following logs

However, it works if i use the follow ACLS

I've checked everything, the roles are assigned and created.

This is the JWT i get after logging in

It seems to me that the authentication is working, but after the authorization, it seems to not redirect it to the internal proxy of the backend app, but to http://localhost instead?

I don't really know how to debug this though, any help will be appreciated!

0 投票
1 回答
1608 浏览

keycloak - 登录后keycloak网关ERR_TOO_MANY_REDIRECTS

在 docker-compose.yaml 中使用只有 keycloak + keycloak gateway + 一个基本的 hello world 服务器的基本设置,我将端口绑定到 localhost。

在 hittint localhost:3000/app 上的浏览​​器中,它要求登录,登录后它进入 307 的循环,直到它给出错误

这是码头工人日志

这是我的 /etc/hosts

这是我的 docker-compose 文件

这是我的看门人配置

0 投票
0 回答
146 浏览

openid - 覆盖 Keycloak 授权端点

我正在配置 keycloak-gatekeeper 以使用现有的 Keycloak 服务器。Keycloak 服务器位于内部网络上,可以使用内部域名从网守访问,使用外部域名从外部访问(用于最终用户身份验证)。

我遇到的问题是,当网守使用.well-known/openid-configuration端点进行发现时,此请求通过内部网络 URL 到达,并且 keycloak 使用内部域的 authorization_endpoint URL 响应。然后,Gatekeeper 将客户端重定向到此内部 URL,由于位于外部网络上,它们无法访问该 URL。

是否有解决此问题的解决方案,而无需采用不太理想的解决方法,例如干预 DNS 查询、创建主机条目等?

1 - 有没有办法配置 Keycloak 服务器为 authentication_endpoint 返回外部 URL,而不管哪个 URL 用于发现?

2 - 或者有没有办法覆盖 Keycloak Gatekeeper 上的 authorization_endpoint ?

试图在双方都设置基本 URL,但都没有帮助。

0 投票
2 回答
329 浏览

keycloak - Keycloak 应用程序与客户端身份验证

嗨,我对如何通过 keycloak 保护应用程序有点困惑,该网站显示了如何保护客户端。我需要在我的设置中保护的应用程序是一个桌面应用程序,它使用 keycloak + keycloak-gatekeeper 保护端点。

我设法使用python中的以下库让它工作

https://bitbucket.org/agriness/python-keycloak/src/master/

但是,它需要我输入客户密码,我想知道这是否安全?

另外,当我使用浏览器登录时,浏览器不需要客户端密码,而是通过网守,这告诉我我在这里做错了。

谢谢

0 投票
1 回答
1391 浏览

docker-compose - Keycloak Gatekeeper(转发代理)什么都不做

我有一个 docker-compose 设置,服务 1(grafana)向服务 2(prometheus)发送请求。我在服务 2 前面放置了一个 Keycloak Gatekeeper,要求进行身份验证。这工作得很好。

现在我的想法是在服务 1 前面放置第二个 Keycloak Gatekeeper,注入所述身份验证。

不幸的是,这不起作用。通过wireshark观察我的流量,似乎我的第二个Keycloak Gatekeeper甚至没有参与任何通信。

我的服务 1 和转发代理的 docker compose 文件大致如下所示:

0 投票
1 回答
2874 浏览

keycloak - 用户临时锁定的 Keycloak 自定义消息

我正在使用 Kyecloak:4.8.0,并为我的领域启用了蛮力攻击。现在,每当用户提供 3 次错误凭据时,用户将被暂时锁定。

但用户仍然会看到“无效的用户名/密码”。

根据这个线程Keycloak故意这样做: https ://issues.jboss.org/browse/KEYCLOAK-5284

但我仍然想向用户显示他的帐户已被锁定。

有什么方法可以自定义此消息吗?

我尝试通过在自定义 keycloak 主题中添加消息来做到这一点,如下所示:

位置:主题\adminlte\login\messages\messages_en.properties

此更改不起作用。

0 投票
0 回答
1564 浏览

http-headers - 如何使用 Keycloak Gatekeeper 设置自定义标头?

我在 OpenShift 中设置了 Keycloak 和 Keycloak-Gatekeeper,它充当正在运行的应用程序的代理。

Keycloak Gatekeeper 正在代理的应用程序需要设置自定义 cookie,所以我想我可以使用 Gatekeeper 的自定义标头配置来设置它,但是我遇到了问题。

配置如下:

重新部署并运行身份验证流程后,上游 URL/应用程序未收到自定义标头。我尝试了多个标头(键/值),但似乎无法使其正常工作或找到该标头在流中的注入位置。

我还检查了日志,但找不到任何超级有用的东西。

示例网守配置

网守自定义标头文档

关于如何使它工作的任何建议/想法?

0 投票
0 回答
529 浏览

python - 使用 python 请求会话注销 keycloak 网守

使用浏览器

如果我使用浏览器登录和注销,一切正常

例如。我使用 keycloak 表单登录,然后通过在浏览器中粘贴以下内容注销

当我检查 keycloak 管理页面时,会话按预期删除

使用 python 请求会话

我使用以下登录

这有效,当我尝试访问登录后能够访问的任何端点时

我使用以下方式注销

这会使我退出网守并清除 cookie(我无法访问和端点是正确的),但是在 keycloak 管理页面中,我仍然看到我的会话处于活动状态。

cookie 应该保存在会话中,有人知道为什么吗?谢谢

编辑:

我认为这是因为当我使用端点通过网守登录时

它不会返回我使用浏览器时获得的这 3 个 cookie

这 3 个 cookie 来自端点

但是,由于我没有通过表单登录,因此我没有这些令牌