博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oauth2认证授权服务(django-oauth-toolkit)搭建及操作流程
阅读量:5830 次
发布时间:2019-06-18

本文共 2833 字,大约阅读时间需要 9 分钟。

hot3.png

简介

以下内容主要介绍oauth2的认证流程及授权实验操作方法,具体oauth的授权方式有几种,下面主要是描述授权码的方式

oauth2客户端授权模式之授权码的实现流程图(authorization code)

+----------+| Resource ||   Owner  ||          |+----------+     ^     |    (B)+----|-----+          Client Identifier      +---------------+|         -+----(A)-- & Redirection URI ---->|               ||  User-   |                                 | Authorization ||  Agent  -+----(B)-- User authenticates --->|     Server    ||          |                                 |               ||         -+----(C)-- Authorization Code ---<|               |+-|----|---+                                 +---------------+  |    |                                         ^      v (A)  (C)                                        |      |  |    |                                         |      |  ^    v                                         |      |+---------+                                      |      ||         |>---(D)-- Authorization Code ---------'      ||  Client |          & Redirection URI                  ||         |                                             ||         |<---(E)----- Access Token -------------------'+---------+       (w/ Optional Refresh Token)备注: (A), (B), (C) 这三步被拆成两段,因为会经过 user-agent                  Figure 3: Authorization Code Flow

搭建django工程

pip install django-oauth-toolkit

具体的环境配置(requriement.txt)

Django (1.9.4)django-oauth-toolkit (0.10.0)

后面的配置可以直接通过官方的说明进行操作

认证授权的流程介绍

注册application

访问下面的地址,进行新application的注册,这个步骤也可以通过脚本直接生成,也可以通过后台页面生成

注册通过之后,可以拿到对于的client_id和client_secret,已经注册的时候定义的redirect_url

获取Authorization Code

通过GET方式,请求如下地址:

http://192.168.66.96:8000/o/authorize?response_type=code&client_id=7tZU8b56I28VbUjWXMCFQBuJqEgFrfU1j9x8nGae&redirect_uri=http://www.baidu.com

response_type表示回调授权的方式,这里是code

client_id是刚刚生成的id

redirect_url是刚刚注册填写的授权url地址

认证服务(django-oauth-toolkit)会回调刚刚参数中的redirect_url,刚刚填写的是www.baidu.com,自然他会去回调这个url地址,然后带上code参数。

回调成功之后,生成的code也会在admin后台的Grants表里面记录

但是这个code有几个特点

  1. 只能使用一次

  2. 时效性只有10分钟有效时间

获取Access Token

通过POST方式,请求方法如下面代码

# coding=utf8import requestsimport jsonurl = 'http://192.168.66.96:8000/o/token/'s = requests.Session()var = {'grant_type':'authorization_code',       'code':'uJxN3b90YHjx3fgXkfjnqXgCrku8xY',       'redirect_uri':'http://www.baidu.com',       'client_id':'7tZU8b56I28VbUjWXMCFQBuJqEgFrfU1j9x8nGae',       'client_secret':'2EoIS2NYpI2gX1UZadXBuY1mXUtJkwRGvBjRAzRYTDLu4glUNcd1WEh7bbMgMKdBvX3YfE3Jsi9578OV8UYrllR5iS5SYlFDG6wHXoIAXBsB9A3XFswpYi8uXre2oB5g',            }r = s.post(url=url,data=var)print r.text

成功获取到的数据如下:

{    "access_token": "ofOLKAY4SJthtCmeX0P5KZXuXRyUgN",    "token_type": "Bearer",    "expires_in": 36000,    "refresh_token": "nzuPk7HDlYHHUwYRW0OsnT1eA6q6cQ",    "scope": "read write groups"}

如果成功获取到认证token,Grants中的code会被删除,Access tokens表会生成最新的access token

资源来源

转载于:https://my.oschina.net/mesopotamia/blog/761605

你可能感兴趣的文章
解决灾难恢复后域共享目录SYSVOL与NELOGON共享丢失
查看>>
Lync 客户端单独安装激活步骤
查看>>
eclipse集成weblogic开发环境的搭建
查看>>
写一个bat文件,删除文件名符合特定规则,且更改日期在某
查看>>
【jc2-1】 网络层IP编址
查看>>
我的友情链接
查看>>
apahce安装时的APR问题解决方法
查看>>
Citrix今年9月份就会出XenServer的新版本
查看>>
MySQL数据库高并发优化配置
查看>>
写Use Case的一种方式,从oracle的tutorial抄来的
查看>>
【C#】protected 变量类型
查看>>
Shell下支持变量的重复字符串
查看>>
Ubuntu解压
查看>>
爬虫_房多多(设置随机数反爬)
查看>>
藏地密码
查看>>
我的友情链接
查看>>
Oracle字符集详解
查看>>
CCNA学习指南 第九章 下载
查看>>
windows下硬件信息的另一种方式获取
查看>>
[PHP] 代码重用与函数
查看>>