最近在项目中需要用到oauth2来进行第三方的授权服务,在网上了解到django-oauth-toolkit已经集成了oauth2方法,将自己心得记录下来.
首先要学习什么是oauth2,阮老师的介绍应该算是很详细了,网址为:理解oauth2.
我用到的是oauth2中的密码模式 resource owner password credentials来进行访问授权的,与授权码模式有所不同,不过大致原理相似,可以自行尝试.
============================================================================
用oauth中的password方法来获取令牌访问整体流程
(A)用户向客户端提供用户名和密码。
(B)客户端将用户名和密码发给认证服务器,向后者请求令牌。
(C)认证服务器确认无误后,向客户端提供访问令牌。
在django-oauth-toolkit中获取令牌方法如下:
curl -X POST -d "grant_type=password&username=<user_name>&password=<password>" -u"<client_id>:<client_secret>" http://localhost:8000/o/token/
获取到token等信息,信息内容如下:
{
"access_token": "<your_access_token>", #获得的令牌
"token_type": "Bearer", #表示令牌类型,大小写不敏感,可以是bearer类型或mac类型
"expires_in": 36000, #过期时间
"refresh_token": "<your_refresh_token>", #刷新令牌,用来获取下一次的访问令牌,
"scope": "read write groups" #表示权限范围,可选,设置时可以直接在上面获取token的参数中加入scope即可
}
即可用token进行访问:
curl -H "Authorization: Bearer <your_access_token>" http://localhost:8000/api/
接下来用ajax以及跨域的cors方法来进行前端处理
===============================================