Authentication 使用Istio和x27的Web浏览器;s最终用户身份验证

Authentication 使用Istio和x27的Web浏览器;s最终用户身份验证,authentication,keycloak,istio,Authentication,Keycloak,Istio,奇怪的事情正在发生 我的集群中有一个keydape和一个简单的Httpbin应用程序 我已经设置了Istio,以使用KeyClope对用户进行身份验证(如中所述) 尝试时使用以下配置设置: curl <IP_OF_HTTPBIN> curl 我获得原始身份验证失败,这是完全正常的,因为我没有提供任何访问令牌 现在,当我使用我的web浏览器访问应用程序时,我可能会遇到某种错误,但它不会工作 我的问题是它不应该工作。浏览器未获得比curl命令更高的授权 有关信息,我使用kubec

奇怪的事情正在发生

我的集群中有一个keydape和一个简单的Httpbin应用程序

我已经设置了Istio,以使用KeyClope对用户进行身份验证(如中所述)

尝试时使用以下配置设置:

curl <IP_OF_HTTPBIN>
curl
我获得
原始身份验证失败
,这是完全正常的,因为我没有提供任何访问令牌


现在,当我使用我的web浏览器访问应用程序时,我可能会遇到某种错误,但它不会工作

我的问题是它不应该工作。浏览器未获得比curl命令更高的授权



有关信息,我使用
kubectl-port-forward
和反向代理从浏览器访问应用程序。

我找到了一种解决方法。。。如果我使用网关访问应用程序,那么浏览器也会获得
原始身份验证失败


但这并不能解释为什么浏览器首先绕过了istio的策略,而curl没有…。

kubectl端口转发
将流量从您机器的本地主机直接转发到k8 pod,绕过所有istio身份验证。当您针对httpbin的公共ip运行curl时,请求由Istio的网关处理,jwt令牌经过验证


Istio的jwt验证发生在下游,与pod无关。如果您直接点击pod,那么出于开发目的,您有意绕过最终用户身份验证。这使您可以开发独立于身份验证方式的服务。

谢谢您的回答!我把它通过网关让我们来处理安全问题。但我仍然不明白的是卷曲集群IP和使用端口转发之间的区别。在第一段中,您将端口向前与通过网关的卷曲进行比较。但是我的讨论是关于直接使用集群IP(不使用网关)的端口转发和curl之间的区别。虽然可能我没有理解你的意思:-p我现在理解的是,你不能期望从外部连接比使用Kubernetes API得到相同的结果,因为你实际上是直接连接到pod。有关于此堆栈线程[1]的详细信息。\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu[1]:
curl <IP_OF_HTTPBIN>