我有一个dockerized flask应用程序,它在启用了Identity-Aware Proxy的Google Cloud Platform中的kuberneetes上运行。我可以运行“ Hello World”网站,但是当我尝试使用签名的JWT标头时,就会出现问题。
在我的浏览器中,我看到
There was a problem with your request. Error code 9
我的应用是这样的example,并且我使用gunicorn
来运行该应用。似乎麻烦发生在第一行
jwt = request.headers.get('x-goog-iap-jwt-assertion')
但这对我来说毫无意义。但是我可以在该行之前返回一个字符串,但不能在此之后返回。有什么建议吗?
有关当前kubernetes集群的详细信息
apiVersion: apps/v1
kind: Deployment
metadata:
name: internal-tools-app
spec:
selector:
matchLabels:
app: internal-tools
template:
metadata:
labels:
app: internal-tools
spec:
containers:
- name: internal-web-app
image: <<MY_IMAGE>>
---
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
name: internal-tools-backend-config
namespace: default
spec:
iap:
enabled: true
oauthclientCredentials:
secretName: internal-tools-oauth
---
apiVersion: v1
kind: Service
metadata:
name: internal-tools-service
annotations:
beta.cloud.google.com/backend-config: '{"default": "internal-tools-backend-config"}'
spec:
type: NodePort
selector:
app: internal-tools
ports:
- name: it-first-port
protocol: TCP
port: 8080
targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.global-static-ip-name: internal-tools-ip
ingress.gcp.kubernetes.io/pre-shared-cert: "letsencrypt-internal-tools"
name: internal-tools-ingress
spec:
rules:
- host: <<MY_DOMAIN>>
http:
paths:
- backend:
serviceName: internal-tools-service
servicePort: it-first-port
进一步的调查显示
ImportError: Error loading shared library libssl.so.45: No such file or directory (needed by /usr/local/lib/python3.6/site-packages/cryptography/hazmat/bindings/_openssl.abi3.so)
运行以下内容时
jwt.decode(
iap_jwt, key,
algorithms=['ES256'],
audience=expected_audience)
答案 0 :(得分:0)
今晚,我刚刚通过在GCP控制台中删除并重新创建前端和Google管理的证书对象来修复此错误代码。当我停用集群并重新使用集群并将其应用程序部署在具有相同静态IP地址的全新集群上时,似乎会发生这种情况。
答案 1 :(得分:0)
我从Google Cloud Team Bug跟踪器获得了以下答案:
当同时发生多个重新认证请求时(特别是通常由浏览器一次重新加载多个窗口/选项卡引起的),将出现错误代码9。当前,此流需要临时cookie流才能首先成功,并且该cookie对于该流是唯一的。但是,如果一个流程在上一个流程完成之前开始,例如在同一浏览器中同时进行多次刷新,则将导致您看到的错误,并使用户面对该身份验证页面。
您可以尝试以下选项来解决该问题
会话处理程序