gpt4 book ai didi

keycloak - 在 keycloak 看门人后面运行用户界面和 API

转载 作者:行者123 更新时间:2023-12-03 09:39:44 25 4
gpt4 key购买 nike

keycloak 和一般身份验证的新手,很抱歉遗漏了一些明显的东西,并且没有使用准确的术语。

我正在尝试运行一个与 Java (dropwizard) API 对话的简单 Angular UI。我希望这两个都需要身份验证。我(几乎)能够使用单个领域和 secret 客户端让它们在 keycloak 和 keycloak 看门人后面正常运行。在这种情况下,看门人有一个 upstream-url那是一个 traefik 实例,然后路由到 UI 或 API docker 容器。就像是:

Gatekeeper upstream-url ----> Traefik (my.domain/*)  ----> UI (my.domain/ui/*)
\---> API (my.domain/api/*)

这工作正常,直到 session 超时,并且当(已加载的)UI 页面上的用户单击尝试发送 ajax 请求以访问 API 的按钮时(例如 https://my.domain/api/getstuff ),然后 Gatekeeper 重定向(即 301)到keycloak登录页面。这个重定向对于 API 请求来说有点荒谬......

在这一点上,我的 UI 和 API 项目都与身份验证无关(即它们还没有运行任何适配器等 - 我现在依靠 docker 设置来防止“直接”访问 UI 和 API。我会一旦我需要了解有关用户的信息,请添加适配器)。我可以在 https://www.keycloak.org/docs/latest/securing_apps/index.html#configuration-options 中看到 autodetect-bearer-only似乎描述了我的问题的选项,即

It allows you to redirect unauthenticated users of the web application to the Keycloak login page, but send an HTTP 401 status code to unauthenticated SOAP or REST clients instead as they would not understand a redirect to the login page



但似乎适用于适配器层,即在我的场景中的网守之后。
this似乎也很相似。

我想我想要对 https://my.domain/ui/ 进行未经身份验证(例如从未登录或超时)的访问请求* 被重定向到 keycloak 登录页面,但是 https://my.domain/api/ * 到 401。

来自 https://my.domain/ui/somepagehttps://my.domain/api/getstuff 的 ajax 请求使用浏览器从登录中获得的 JWT/token/cookie(现在正在使用)。

我该怎么做呢?我错过了什么愚蠢的明显步骤!?

最佳答案

不幸的是,您不能告诉 Gatekeeper 返回 401(403) 响应代码而不是重定向。有类似问题:https://issues.jboss.org/browse/KEYCLOAK-11082

您可以做的是完全删除 Gatekeeper 并在前端(JS 适配器)和后端(Java 适配器)上实现仅承载客户端的公共(public)客户端身份验证。如果您的 Java 应用程序服务于前端,则您只能实现 secret 客户端身份验证并为/api/* 请求返回 401(403) 响应。

关于keycloak - 在 keycloak 看门人后面运行用户界面和 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58284572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com