Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 允许django oauth toolkit发出jwt而不是随机字符串_Python_Django - Fatal编程技术网

Python 允许django oauth toolkit发出jwt而不是随机字符串

Python 允许django oauth toolkit发出jwt而不是随机字符串,python,django,Python,Django,我知道django oauth toolkit正在使用oauthlib,oauthlib提供了一个使用jwt而不是随机字符串实现的示例 然而,我不明白如何让djangoauth工具包发出jwt而不是随机字符串。谁能给出一个实现示例或git repo,说明我们如何做到这一点 path('o/', include('oauth2_provider.urls', namespace='oauth2_provider')), 我不确定我们如何更改导入行中的视图以自定义它,从而允许jwts您可以使用dj

我知道django oauth toolkit正在使用oauthlib,oauthlib提供了一个使用jwt而不是随机字符串实现的示例

然而,我不明白如何让djangoauth工具包发出jwt而不是随机字符串。谁能给出一个实现示例或git repo,说明我们如何做到这一点

path('o/', include('oauth2_provider.urls', namespace='oauth2_provider')),

我不确定我们如何更改导入行中的视图以自定义它,从而允许jwts

您可以使用
django oauth toolkit jwt
。它在存储库中可用

装置 添加到您的pip要求中:

git+https://github.com/Humanitec/django-oauth-toolkit-jwt#egg=django-oauth-toolkit-jwt
生成密钥 要生成RS256(带有SHA-256的RSA签名)公钥和私钥,请执行以下操作:

$ ssh-keygen -t rsa -b 4096 -f jwtRS256.key # don't add passphrase
$ openssl rsa -in jwtRS256.key -pubout -outform PEM -out jwtRS256.key.pub
$ cat jwtRS256.key
$ cat jwtRS256.key.pub
生产者配置 要使用此库颁发令牌,请按如下方式配置项目:

将oauth2_提供程序和oauth2_提供程序_jwt添加到已安装的_应用程序:

设置.py 包括新的oauth URL:

url.py 将以下内容添加到中间件:

$ ssh-keygen -t rsa -b 4096 -f jwtRS256.key # don't add passphrase
$ openssl rsa -in jwtRS256.key -pubout -outform PEM -out jwtRS256.key.pub
$ cat jwtRS256.key
$ cat jwtRS256.key.pub
设置.py 最后添加一个自定义后端身份验证:

设置.py 现在我们需要在配置中设置一个JWT_ISSUER变量,它将是发行者的名称。获取我们之前创建的RSA256私钥,并将其存储在JWT_private_key_RSA_变量*中。例如:

设置.py
我认为它还没有在django oauth工具包上实现,请关注这里的问题。也许你可以创建一个公关一旦想出
urlpatterns = [
    ...
    url(r'^oauth/', include('oauth2_provider_jwt.urls', namespace='oauth2_provider_jwt')),
]
MIDDLEWARE = [
    ...
    'oauth2_provider.middleware.OAuth2TokenMiddleware',
]
AUTHENTICATION_BACKENDS = (
    ...
    'oauth2_provider.backends.OAuth2Backend',
)
JWT_ISSUER = 'OneIssuer'
JWT_PRIVATE_KEY_RSA_ONEISSUER = """
-----BEGIN RSA PRIVATE KEY-----
MIIBOAIBAAJAbCmbRUsLrsv0/Cq7DVDpUooPS1V2sr0EhTZAZmJhid2o/+ya/28m
...
6D0+csaGDlZ9GbrTpTJUObNENNHqfrHGfqzDxQ==
-----END RSA PRIVATE KEY-----
"""