我正在从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。
我有以下配置
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。如果这是不可能的,有没有其他方法来实现同样的结果?
发布于 2019-11-07 15:11:47
只需在kubernetes上删除oauth部分,并让API Gateway验证请求,它就有能力做你需要的事情。您可以保护kubernetes,使其只接受来自API Gateway的请求,因此您不需要保护端点不受其他调用的影响。
https://stackoverflow.com/questions/58740557
复制相似问题