通过输入Istio的最终用户身份验证来访问Web浏览器

时间:2019-04-30 15:47:17

标签: authentication keycloak istio

奇怪的事情正在发生!

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

我已设置 Istio 以使用密钥斗篷来验证用户身份(如Istio documentation中所述)

apiVersion: "authentication.istio.io/v1alpha1"
kind: "Policy"
metadata:
  name: auth-token
spec:
  targets:
    - name: httpbin
  origins:
    - jwt:
        issuer: "http://10.233.11.203/auth/realms/istio"
        jwksUri: "http://10.233.11.203/auth/realms/istio/protocol/openid-connect/certs"
  principalBinding: USE_ORIGIN

尝试以下配置时:

curl <IP_OF_HTTPBIN>

我得到Origin authentification failed,这是完全正常的,因为我没有提供任何访问令牌。


现在,当我使用我的网络浏览器访问应用程序时,我会期望出现某种错误,但是不行...

  

我的问题是它不起作用。浏览器未获得更多授权,因此curl命令已...


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

2 个答案:

答案 0 :(得分:1)

kubectl port-forward绕过所有Istio身份验证,将流量从计算机的本地主机直接转发到k8 pod。当您针对httpbin的公共IP运行curl时,该请求将由Istio的网关处理,并且jwt令牌将得到验证。

Istio的jwt验证发生在下游并且独立于您的pod。如果您直接击中Pod,则出于开发目的,您有意绕过最终用户身份验证。这样,您可以独立于认证方式开发服务。

答案 1 :(得分:0)

我找到了解决此问题的方法...如果我使用网关访问该应用程序,则浏览器也会获得Origin authentification failed

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