在 Google App Engine 上将密钥放入环境变量时,简单的 jwt 中断
Simple jwt breaks when Secret Key is put into environment variable on Google App Engine
在使用 simplejwt 库的 Google App Engine 上托管的 Django 项目中,我将密钥放入环境变量并尝试在 jwt/create端点:
TypeError at /api/v1/auth/jwt/create/
Expected a string value
密钥作为 SECRET_KEY_ENV 存储在应用程序的 yaml 文件中,并像这样加载到 Django 的设置文件中:
SECRET_KEY = str(os.environ["SECRET_KEY_ENV"]),
数据库环境变量以完全相同的方式加载,一切正常。
错误信息中第一次弹出的key在这个文件中:
/layers/google.python.pip/pip/lib/python3.9/site-packages/jwt/api_jwt.py,
line 63, in encode
并采用这种形式:
key : ('ai0eobey86soimfxb6ax4uqdmo49yiauxchgnspsh',)
从那里他被传给了:
- /layers/google.python.pip/pip/lib/python3.9/site-packages/jwt/api_jws.py,第 110 行,编码
- /layers/google.python.pip/pip/lib/python3.9/site-packages/jwt/algorithms.py,第 180 行,在 prepare_key
中
- /layers/google.python.pip/pip/lib/python3.9/site-packages/jwt/utils.py,第 21 行,在 force_bytes
中
没有被更改,最后一个文件“utils.py”是引发错误消息的文件。
我试过更改变量名,从键中删除特殊字符,在设置文件中移动定义,但没有任何效果。一旦我将它恢复为明文,它就可以正常工作,但出于明显的安全原因我不能继续这样做。
我该如何解决这个问题?
谢谢和 BR
在这里解决我自己的问题,是声明密钥的结尾逗号导致了这个错误。删除括号内的逗号修复它。
在使用 simplejwt 库的 Google App Engine 上托管的 Django 项目中,我将密钥放入环境变量并尝试在 jwt/create端点:
TypeError at /api/v1/auth/jwt/create/ Expected a string value
密钥作为 SECRET_KEY_ENV 存储在应用程序的 yaml 文件中,并像这样加载到 Django 的设置文件中:
SECRET_KEY = str(os.environ["SECRET_KEY_ENV"]),
数据库环境变量以完全相同的方式加载,一切正常。
错误信息中第一次弹出的key在这个文件中:
/layers/google.python.pip/pip/lib/python3.9/site-packages/jwt/api_jwt.py, line 63, in encode
并采用这种形式:
key : ('ai0eobey86soimfxb6ax4uqdmo49yiauxchgnspsh',)
从那里他被传给了:
- /layers/google.python.pip/pip/lib/python3.9/site-packages/jwt/api_jws.py,第 110 行,编码
- /layers/google.python.pip/pip/lib/python3.9/site-packages/jwt/algorithms.py,第 180 行,在 prepare_key 中
- /layers/google.python.pip/pip/lib/python3.9/site-packages/jwt/utils.py,第 21 行,在 force_bytes 中
没有被更改,最后一个文件“utils.py”是引发错误消息的文件。 我试过更改变量名,从键中删除特殊字符,在设置文件中移动定义,但没有任何效果。一旦我将它恢复为明文,它就可以正常工作,但出于明显的安全原因我不能继续这样做。
我该如何解决这个问题? 谢谢和 BR
在这里解决我自己的问题,是声明密钥的结尾逗号导致了这个错误。删除括号内的逗号修复它。