[英]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.