-
Notifications
You must be signed in to change notification settings - Fork 0
Module.oauth
Implementation of OAuth 2.0 in Pi
- OAuth 系统架构图
- 系统角色
- OAuth server:在使用Pi的网站server中,安装OAuth的 Oauth module,网站就可以作为OAuth server 为第三方应用和网站提供OAuth服务。
- 第三方应用:基于Pi框架的网站,安装OAuth 的consumer module,通过配置,即可作为第三方向OAuth Server请求服务
- 资源提供方:在本系统中,资源提供方为作为OAuth server的网站的其他模块
- 系统简介
- 本系统分为两部分,consumer module和OAuth module,分别作为应用端和server端。
- OAuth module:基于Pi框架的 OAuth service开发,提供了完整的OAuht服务
- consumer module:提供第三方使用OAuth服务的接口,是第三方很容易在自己的模块中使用OAuth
系统功能架构图 如下:
-
1.客户端相关功能 提供第三方应用注册,修改信息等功能,注册后会得到client_id 和client_secret 作为第三方身份识别
-
2.用户授权功能 授权功能支持:authorization Code授权方式,implicit授权方式,clientCredentials授权方式(有限定条件),通过授权功能,第三方应用可以获得access_token和refresheToken
-
3.授权信息管理功能 为资源提供方提供token验证和授权信息查询,并作为consumer module中某些授权相关功能的处理接口
- clientController
- registerAction
- updateAction
- listAction
- AuthorizationController
- indexAction
- GrantController
- indexAction
- TokenController
- refershAction
- revokeAction
- validAction
-
AuthorizeController: 用户授权并返回authorization Code或者token
- indexAction
程序流程图:
第三方应用发起用户授权请求,若需要授权的用户已登录,则跳转到授权确认页,否则,跳转到用户登录页面,当用户登录成功后再跳转到授权确认页。 用户确认授权后,产生授权码,并将授权码以回调地址参数的形式返回,是浏览器自动跳转
参数: response_type :code,请求返回的为授权码 client_id:注册客户端的id,确认客户端身份 redirect_uri:客户端接收授权码,发起token请求的地址,需要经过两次URL转码 state:随机字符串,由客户端产生,响应时作为参数原样返回
授权流程结束后,浏览器调整到 http://YOUR_REDIRECT_URI?code=CODE&state=RAND_STRING
-
GrantController: 使用Authorization Code 返回access_token,为第三方授权
-
indexAction 第三方获取授权码 code 后,发起申请token的请求,程序通过后,返回包含token信息的Json格式数据
-
ClientController :实现第三方应用的相关功能:注册,信息查看,信息修改功能
-
TokenController: 实现授权管理功能: 授权信息获取,刷新access_token,授权取消
- OAuth service 结构逻辑图