首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有cookie的情况下,我可以将kubernetes中的nginx入口控制器oauth2_proxy用于azure active directory吗?

在没有cookie的情况下,我可以将kubernetes中的nginx入口控制器oauth2_proxy用于azure active directory吗?
EN

Stack Overflow用户
提问于 2019-11-07 09:06:20
回答 1查看 605关注 0票数 0

我正在从Azure api服务到azure kubernetes来托管api的过程中。我有一个解决方案,可以使用nginx、oauth2_proxy和azure active directory。但是,该解决方案需要cookie才能正常工作。因为这是一个api,外部安全性将由具有自定义授权者的AWS API Gateway管理。我希望API网关仅使用持有者令牌进行身份验证,而不需要cookie。

我有我的解决方案工作,并一直到目前为止测试邮递员。在postman中,我有持有者令牌,但如果没有cookie,就无法找到访问的方法。

我的应用程序目前通过aws api网关和azure活动目录的azure应用程序服务运行。在这种情况下,aws api网关自定义授权者不需要cookie。

我有以下配置

代码语言:javascript
复制
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。如果这是不可能的,有没有其他方法来实现同样的结果?

EN

回答 1

Stack Overflow用户

发布于 2019-11-07 15:11:47

只需在kubernetes上删除oauth部分,并让API Gateway验证请求,它就有能力做你需要的事情。您可以保护kubernetes,使其只接受来自API Gateway的请求,因此您不需要保护端点不受其他调用的影响。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58740557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档