繁体   English   中英

can I use nginx ingress controller oauth2_proxy in kubernetes with azure active directory without cookies

[英]can I use nginx ingress controller oauth2_proxy in kubernetes with azure active directory without cookies

我正在从 Azure Web 服务更改为 azure kubernetes 以托管 Z8A5DA52ED164E4A8A105Z 我有使用 nginx 和 oauth2_proxy 和 azure 活动目录的解决方案。 但是,该解决方案需要 function 的 cookie。 由于这是一个 api,外部安全性将由具有自定义授权器的 AWS API 网关管理。 我希望 API 网关仅使用不记名令牌进行身份验证,而不需要 cookie。

我的解决方案正在运行,并且到目前为止一直在测试 postman。 在 postman 我有不记名令牌,但找不到没有 cookie 的访问方式。
我的应用程序目前通过 aws api 网关和带有 azure 活动目录的 azure 应用程序服务运行。 在这种情况下,aws api 网关自定义授权者不需要 cookie。

我有以下配置

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: oauth2-proxy
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
    - host: mydomain.com
      http:
        paths:
          - path: /oauth2
            backend:
              serviceName: oauth2-proxy
              servicePort: 4180
  tls:
  - hosts:
    - mydomain.com
    secretName: tls-secret

------
# oauth2_proxy.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: oauth2-proxy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: oauth2-proxy
  template:
    metadata:
      labels:
        app: oauth2-proxy
    spec:
      containers:
      - env:
          - name: OAUTH2_PROXY_PROVIDER
            value: azure
          - name: OAUTH2_PROXY_AZURE_TENANT
            value: mytennantid
          - name: OAUTH2_PROXY_CLIENT_ID
            value: my clientid
          - name: OAUTH2_PROXY_CLIENT_SECRET
            value: my client secret
          - name: OAUTH2_PROXY_COOKIE_SECRET
            value: my cookie secret
          - name: OAUTH2_PROXY_HTTP_ADDRESS
            value: "0.0.0.0:4180"
          - name: OAUTH2_PROXY_UPSTREAM
            value: "file:///dev/null"
        image: machinedata/oauth2_proxy:latest
        imagePullPolicy: IfNotPresent
        name: oauth2-proxy
        ports:
        - containerPort: 4180
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  labels:
    k8s-app: oauth2-proxy
  name: oauth2-proxy
spec:
  ports:
  - name: http
    port: 4180
    protocol: TCP
    targetPort: 4180
  selector:
    app: oauth2-proxy 
-----
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
    nginx.ingress.kubernetes.io/auth-url: "https://$host/oauth2/auth"
    nginx.ingress.kubernetes.io/auth-signin: "https://$host/oauth2/start?rd=$escaped_request_uri"
spec:
  tls:
  - hosts:
    - mydomain.com
    secretName: tls-secret
  rules:
  - host: mydomain.com
    http:
      paths:
      - backend:
          serviceName: mayapp
          servicePort: 80

我想更改此配置,以便不再需要 cookie。 如果这是不可能的,还有其他方法可以达到相同的结果吗?

只需将 oauth 部分放在 kubernetes 上,并让 API 网关验证请求,它就有能力完全满足您的需求。 您可以保护您的 kubernetes 只接受来自 API 网关的请求,因此您不需要保护您的端点免受其他呼叫。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM