django 集成oauth2

2018/7/30 posted in  python

curl -X POST -d "grant_type=password&username=pengjunjie&password=stella" -u"G65f6XQQ1FkqEm5LBMW4PEleBqQxfHdq9WPKjjaA:Pdf9nfta886KT2wGV9hJyN4tn37pSEGGHkXLpqcLYPvu8vzQkLAPBLbNXNyKy3MBHQCQT3vYA9Wniyg4bnFBqrqHJAChshz4WNQyFHOmByu4NA8S6Au6PgjUdWmbFrce" http://localhost:8000/token/

使用 Django OAuth Toolkit 工具包

注意:当前我使用的django 1.11版本,python3.6版本。如果直接使用pip安装django-oauth-toolkit,会默认去下载django2.0版本,所以这里我选择安装了django-oauth-toolkit==1.1.2版本,在这个版本下会默认使用本地的django1.11版本

官网上的操作手册有两个,一个是直接使用的Tutorias,另外一个是django rest framework,最好还是去看django rest framwork的版本,这样结合得更紧密一些。

使用了oauth toolkit,配置完成后,其实对整个django的侵入不算大,依然可以使用request.user来判断用户,这样节省了一个比较大的时间来写公共方法。这样也解决了如果需要绑定用户信息的话,如果不带token就没法使用postman的情况,方便用户长期使用。

接口情况

获取token

curl -X POST -d "grant_type=password&username=pengjunjie&password=stella" -u"l3iNxSydVcHvTeKS9PZJgp2xKgWisaPS60STiWtq:dkyyvEo6rBn2HJRfQThC8Bi5uHVgD2dw8D9r2V5ZsXD8Zrqd0jbhaTXfwgFRZsDZnnLkw6uKra4lrkj6YmeoW8noWRFohMaVXlrADh5wpnNcRSru7prvIZRNwDMJhKMw" http://localhost:8000/token/

在postman上配置如下

查看接口情况

^o/ ^authorize/$ [name='authorize']
^o/ ^token/$ [name='token']
^o/ ^revoke_token/$ [name='revoke-token']
^o/ ^introspect/$ [name='introspect']
^o/ ^applications/$ [name='list']
^o/ ^applications/register/$ [name='register']
^o/ ^applications/(?P<pk>[\w-]+)/$ [name='detail']
^o/ ^applications/(?P<pk>[\w-]+)/delete/$ [name='delete']
^o/ ^applications/(?P<pk>[\w-]+)/update/$ [name='update']
^o/ ^authorized_tokens/$ [name='authorized-token-list']
^o/ ^authorized_tokens/(?P<pk>[\w-]+)/delete/$ [name='authorized-token-delete']

上面就是自带的所有接口情况