我试图在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机密。相反,我为example.com生成了TLS证书,因为这个域属于我。我在nginx控制器中发现了错误,即证书属于example.com,而不是auth.example.com,因为这些URL已用于定义示例in和oauth代理入口,这是我进行上述更改的基础。
我的女人长得像这样
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-tlsapiVersion: 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身份验证的页面,但在我的示例中,它直接给出了服务在成功身份验证后应该给予的响应。我没有被要求提供凭据。另外,我的入口控制器日志中也出现了7 controller.go:753] Error obtaining Endpoints for Service "default/oauth2-proxy": no object matching key "default/oauth2-proxy" in local store错误,我试着使用nginx.inress.kubernetes.io/auth:http://oauth2-proxy.oauth-proxy.svc.cluster.local:4180/oauth2/auth替换,但是它对我不起作用。有人能解释为什么oauth2_proxy不请求身份验证,而入口直接服务请求而不请求身份验证吗?
发布于 2019-07-24 09:46:05
oauth主入口yaml中声明的注释是不正确的。根据kubernetes/nginx-入口文件,外部auth-url的注释应该是
nginx.ingress.kubernetes.io/auth-url: http://<oauth-service-url>而不是
ingress.kubernetes.io/auth-url: http://<oauth-service-url>https://stackoverflow.com/questions/57173348
复制相似问题