在 Django rest 框架中为 JWT RSA 算法导入签名和验证密钥
Importing Signing and Verifying key for JWT RSA algorithm in Django rest framework
我正在开发一个使用 JWTAuthentication django-rest-framework-simplejwt 的 django rest api 应用程序。由于使用RSA算法,需要设置签名验证密钥
下面的实现对我有用。
SIMPLE_JWT = {
'SIGNING_KEY': open('jwtRS256.key').read() if os.path.isfile('./jwtRS256.key') else None,
'VERIFYING_KEY': open('jwtRS256.key.pub').read() if os.path.isfile('./jwtRS256.key.pub') else None,
}
升级到 django 3 后 运行 py -Wa manage.py test
。这是正在显示的一些警告消息。
D:\path\to\settings.py:398: ResourceWarning: unclosed file <_io.TextIOWrapper name='jwtRS256.key' mode='r' encoding='cp1252'>
'SIGNING_KEY': open('jwtRS256.key').read() if os.path.isfile('./jwtRS256.key') else None,
ResourceWarning: Enable tracemalloc to get the object allocation traceback
D:\path\to\settings.py:399: ResourceWarning: unclosed file <_io.TextIOWrapper name='jwtRS256.key.pub' mode='r' encoding='cp1252'>
'VERIFYING_KEY': open('jwtRS256.key.pub').read() if os.path.isfile('./jwtRS256.key.pub') else None,
ResourceWarning: Enable tracemalloc to get the object allocation traceback
我尝试了另一种方法来解决这个问题,但它似乎在验证用户身份时破坏了应用程序。这是尝试的解决方案。
def get_file(file_url):
if os.path.isfile(file_url):
with open(file_url) as f:
return f
return None
SIMPLE_JWT = {
'SIGNING_KEY': get_file('./jwtRS256.key'),
'VERIFYING_KEY': get_file('./jwtRS256.key.pub')
}
这在尝试登录和 returns 500 TypeError: Expecting a PEM-formatted key.
时不起作用
我的错。我忘记看文件了。
def get_file(file_url):
if os.path.isfile(file_url):
with open(file_url) as f:
return f.read()
return None
你可以这样试试
def get_file(file_url):
file_path = os.path.join(settings.MEDIA_ROOT, file_url)
if os.path.exists(file_path):
with open(file_path,'rb') as f:
return f.read()
return None
我正在开发一个使用 JWTAuthentication django-rest-framework-simplejwt 的 django rest api 应用程序。由于使用RSA算法,需要设置签名验证密钥
下面的实现对我有用。
SIMPLE_JWT = {
'SIGNING_KEY': open('jwtRS256.key').read() if os.path.isfile('./jwtRS256.key') else None,
'VERIFYING_KEY': open('jwtRS256.key.pub').read() if os.path.isfile('./jwtRS256.key.pub') else None,
}
升级到 django 3 后 运行 py -Wa manage.py test
。这是正在显示的一些警告消息。
D:\path\to\settings.py:398: ResourceWarning: unclosed file <_io.TextIOWrapper name='jwtRS256.key' mode='r' encoding='cp1252'>
'SIGNING_KEY': open('jwtRS256.key').read() if os.path.isfile('./jwtRS256.key') else None,
ResourceWarning: Enable tracemalloc to get the object allocation traceback
D:\path\to\settings.py:399: ResourceWarning: unclosed file <_io.TextIOWrapper name='jwtRS256.key.pub' mode='r' encoding='cp1252'>
'VERIFYING_KEY': open('jwtRS256.key.pub').read() if os.path.isfile('./jwtRS256.key.pub') else None,
ResourceWarning: Enable tracemalloc to get the object allocation traceback
我尝试了另一种方法来解决这个问题,但它似乎在验证用户身份时破坏了应用程序。这是尝试的解决方案。
def get_file(file_url):
if os.path.isfile(file_url):
with open(file_url) as f:
return f
return None
SIMPLE_JWT = {
'SIGNING_KEY': get_file('./jwtRS256.key'),
'VERIFYING_KEY': get_file('./jwtRS256.key.pub')
}
这在尝试登录和 returns 500 TypeError: Expecting a PEM-formatted key.
我的错。我忘记看文件了。
def get_file(file_url):
if os.path.isfile(file_url):
with open(file_url) as f:
return f.read()
return None
你可以这样试试
def get_file(file_url):
file_path = os.path.join(settings.MEDIA_ROOT, file_url)
if os.path.exists(file_path):
with open(file_path,'rb') as f:
return f.read()
return None