介绍
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.py的INSTALLED_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.py的INSTALLED_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