Django OAuth Toolkit 文档翻译

311 阅读2分钟

介绍

Django OAuth Toolkit可以为你的Django项目简单方便地提供所有添加OAuth2功能所需的端点、数据和逻辑逻辑。Django OAuth Toolkit大量使用了优秀的OAuthLib库,从而所有都满足rfc6749-OAuth 2.0协议的。

使用条件

  • Python 3.7+
  • Django 2.2, 3.2, 4.0.1+
  • oauthlib 3.1+

安装

通过pip安装

pip install django-oauth-toolkit

settings.pyINSTALLED_APPS中添加oauth2_provider

INSTALLED_APPS = (
    ...
    'oauth2_provider',
)

如果您需要OAuth2 provider,您需要将下列内容添加到您的urls.py文件中

from django.urls import include, re_path

urlpatterns = [
    ...
    re_path(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')),
]

同步数据库

$ python manage.py migrate oauth2_provider

新手入门

使用Django、Django OAuth Toolkit和OAuthLib构建OAuth2 provider。

我们要做什么?

我们的计划是从零开始构建OAuth2 provider。

在新手入门中,我们将执行以下内容:

  • 新建一个Django项目。
  • 安装并配置Django OAuth Toolkit。
  • 新建两个OAuth2应用。
  • 使用授权码(Authorization code)授权流(grant flow)。
  • 使用客户端凭据(Client Credential)授予流(grant flow)。

什么是OAuth?

OAuth是访问授权的公开标准,通常用于网络用户在不提交密码的条件下,授予网站或应用程序访问其在其他网站上的信息的权限。——Whitson Gordon

Django

Django是一个高级Python Web框架,它鼓励快速开发和干净、实用的设计。它由经验丰富的开发人员构建,可以解决Web开发的许多麻烦,因此您可以专注于编写应用程序,而无需重新发明轮子。Django website

先创造一个虚拟环境:

mkproject iam

这将创建、激活并将目录更改为新的Python虚拟环境。

安装Django:

pip install Django

新建一个Django项目:

django-admin startproject iam

创建一个新的Django应用:

cd iam/
python manage.py startapp users

如果您打算启动一个新项目,强烈建议您自定义User模型,即使默认的USer模型能满足您的需求。虽然自定义的User模型和默认的User模型没有区别,但是将来有需求的时候,可以在自定义的User模型上进行扩展。

users/models.py添加下面代码:

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    pass

iam/settings.pyINSTALLED_APPS内添加users

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'users.apps.UsersConfig',
]

iam/settings.py内的AUTH_USER_MODEL设置为users.User,使其用于auth应用:

AUTH_USER_MODEL='users.User'

users应用的User模型创建初始的迁移(migration):

python manage.py makemigrations

最后执行迁移:

python manage.py migrate