ssl - oauth2_proxy 不要求身份验证

标签 ssl kubernetes oauth-2.0 kubernetes-ingress nginx-reverse-proxy

我正在尝试在 kubernetes 上设置 oauth2_proxy 以保护我的单页应用程序之一,并且我正在使用 github 作为身份验证提供程序。我发现此链接很有用,因此我按照此进行设置。 [ https://alikhil.github.io/2018/05/oauth2-proxy-for-kubernetes-services/]

我在 github 上创建了一个应用程序,并使用我的 DNS 名称代替 HomePageURL 和 CallBackURL(https://auth.example.com 替换为 https://example.com),因为我没有为 auth.example.com 生成 TLS secret 。相反,我为 example.com 生成了 TLS 证书,因为该域属于我。我在 nginx-controller 中收到错误消息,该证书属于 example.com 而不是 auth.example.com,因为这些 URL 已用于定义示例 Ingress 和 oauth 代理入口,这是我之前做的基础提到张。

我的 Ingresses 是这样的

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: oauth2-proxy
  annotations:
    kubernetes.io/tls-acme: "true"
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
    - host: example.com
      http:
        paths:
          - backend:
              serviceName: oauth2-proxy
              servicePort: 4180
            path: /oauth2
  tls:
    - hosts:
        - example.com
      secretName: oauth-proxy-tls
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: oauth-main-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    kubernetes.io/tls-acme: "true"
    ingress.kubernetes.io/auth-url: https://example.com/oauth2/auth
    ingress.kubernetes.io/auth-signin: https://example/oauth2/start?rd=https://$host$request_uri$is_args$args
spec:
  rules:
    - host: example.com
      http:
        paths:
          - backend:
              serviceName: example-service
              servicePort: 80
            path: /
  tls:
    - hosts:
        - example.com
      secretName: tls-secret

我希望每当我单击 example.com 时,它都应该显示 github 身份验证页面,但在我的例子中,它直接给出服务在成功身份验证后应该给出的响应。我没有被要求提供凭据。此外,我的入口 Controller 日志中出现错误,如 7 controller.go:753] Error obtaining Endpoints for Service "default/oauth2-proxy": no object matching key "default/oauth2-proxy"in local store 另外,我尝试使用 nginx.ingress.kubernetes.io/auth-url 替换:http://oauth2-proxy.oauth-proxy.svc.cluster.local:4180/oauth2/auth如链接中所述,但它对我不起作用。有人可以解释为什么 oauth2_proxy 不要求身份验证而入口直接为请求提供服务而不要求身份验证吗?

最佳答案

oauth-main-ingress yaml 中声明的注释不正确。 根据 kubernetes/nginx-ingress documentation external auth-url 的注解应该是

 nginx.ingress.kubernetes.io/auth-url: http://<oauth-service-url>

代替

 ingress.kubernetes.io/auth-url: http://<oauth-service-url>

关于ssl - oauth2_proxy 不要求身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57173348/

相关文章:

ssl - 如何在 cowboy_http_handler 中获取对等证书

kubernetes - 从 CI 将应用程序部署到 gke

kubernetes 使用 helm 进行滚动更新

java - 拥有恒定的KeyStore会降低安全性吗?

internet-explorer - 仅 Windows 7,仅 IE,认为我的网站证书有问题?

Kubernetes coredns 就绪探测失败

c# - Azure AD Graph 对用户创建的调用失败并出现一些模糊错误

java - OAuth 客户端 Java

c# - JWT 有什么安全保障?

asp.net - 加密 API 调用如何工作