Kubernetes 钥匙斗篷/卢克托看门人——不';t自动重定向到KeyClope登录

Kubernetes 钥匙斗篷/卢克托看门人——不';t自动重定向到KeyClope登录,kubernetes,keycloak,keycloak-gatekeeper,louketo-proxy,Kubernetes,Keycloak,Keycloak Gatekeeper,Louketo Proxy,我正在将gatekeeper/louketo设置为浏览器应用程序的反向代理。我将代理部署为kubernetes吊舱中的一个侧车,在同一集群中的其他位置部署了KeyClope(但通过公共URL访问)。网守在nginx入口后面,该入口负责tls终止 [我已经试用了最新的louketo版本,也试用了fork oneconcern/Keyclope gatekeeper。有些不同,但问题是相同的,因此我认为这是我配置中的一个问题。] 无论我如何设置配置,网守都会读取我所在领域的发现url,但在登录时不会

我正在将gatekeeper/louketo设置为浏览器应用程序的反向代理。我将代理部署为kubernetes吊舱中的一个侧车,在同一集群中的其他位置部署了KeyClope(但通过公共URL访问)。网守在nginx入口后面,该入口负责tls终止

[我已经试用了最新的louketo版本,也试用了fork oneconcern/Keyclope gatekeeper。有些不同,但问题是相同的,因此我认为这是我配置中的一个问题。]

无论我如何设置配置,网守都会读取我所在领域的发现url,但在登录时不会重定向。而是使用
/oauth/authorize
路径重定向到我的上游应用程序。我可以手动强制我的应用程序再次重定向到keydove,但从keydove返回时,守门员无法识别cookie,并在重定向循环中捕获我

看起来我犯了一些简单的配置错误,但我已经为此工作了两天,我已经不知所措了。(甚至对go代码进行了额外的调试,但还没有对其进行足够的研究,真正了解它在做什么。)

我的配置(尝试过的许多不同变体中的最佳猜测):

入口服务<代码>https://dev.my-domain.com并路由到端口4000,即身份验证代理侧车。它使用lets加密证书进行设置,并终止tls。我不在代理中使用tls(我应该吗?)。端口3000处的上游应用程序。KeyClope位于auth.my-domain.com。在
auth proxy keydrope config.yaml
中,我有加密密钥和客户端id。keydrope客户端设置为公共访问和标准流(因此我认为不需要客户端密码)。我修改了各种uri设置,还为CORS添加了web源代码“*”进行测试

在浏览器中尝试受保护的url时,我看到:

no session found in request, redirecting for authorization  {"error": "authentication session not found"}
在代理日志中,它将我重定向到/oauth/authorize,而不是
https://auth.my-domain.com/auth/realms/my-realm/protocol/openid-connect/auth
我认为它应该将我重定向到哪里


更新——正如@jan garaj在回答问题的评论中指出的那样,
/oauth/*
不应该被列入白名单。(我从对别人答案的可能错误的解释中得到了这个答案。)然后我不得不制作cookie而不仅仅是http,最后我想到了这个问题-。。。在那之后它工作了

来自Louketo代理文件:

/oauth/authorize是身份验证端点,它将生成指向提供程序的OpenID重定向

所以重定向是正确的。它是Loukot代理端点。这不是对你的应用程序的请求,它将由louketo代理处理。它将生成另一个重定向到您的IDP,用户需要在其中登录

离题:

  • 对于授权代码流,您确实需要机密客户端和客户端机密
  • CORS的web源“*”仅适用于http协议,https需要明确的源规范

您确定discovery URL吗?我使用nginx作为反向代理与香港API网关,但我的发现url如下:。我正在使用OIDC。代理添加了
。众所周知的/openid配置
本身。它确实说这是成功的。啊。。。所以,也许我把它/oauth/authorize?列为白名单是在制造问题。。。隐马尔可夫模型。。。它似乎没有生成第二个重定向。“离题”:。。。我以为机密客户端是API,不是浏览器应用?科尔斯——啊,好的。把它放在那里,这样CORS在测试时就不会碍事了。是的,白名单可能是个问题,您是否尝试删除
/oauth/*
的白名单?啊哈。。。取得进展!:)。。在非白名单之后,现在将重定向回/oauth/callback。仍然没有完全完成,因为我得到
{“error”:“无法验证ID令牌”}
确定。。。摆脱了一些我正在摆弄的曲奇变体。现在我要讲的是
{“error”:“无法用代码交换访问令牌”}
Horay!最后一期是!非常感谢。
no session found in request, redirecting for authorization  {"error": "authentication session not found"}