Oauth认证流程
2021-05-17 17:54:40 0 举报
OAUTH协议认证流程
作者其他创作
大纲/内容
(1)获取用户openid
身份认证模块
.NET
第三步:
1)客户端请求CODE流程
YES
3)客户端请求用户资源流程
服务端接口(ThinkOAuth2.php):/genAccessToken()
客户端部分
PDO_ODBC
开始
重定向到回调地址
生成Access Token
用户授权
取得管理接口
返回数据
JSON格式返回
返回带地址的数据
(2)将Code信息保存到数据库
Resource API
AccessToken API
客户端
NO
第三方应用客户端
第三方应用请求临时令牌(Code)
服务端 核心模块
URL访问
第一步:
获取失败
请求临时Token
返回
服务端生成Code信息
生成临时Code
生成验证Token
MD5加盐算法
JAVA
Code API
结束
客户端(OauthSdk.class.php):/openid()
使用 CURL 模拟一个 HTTP 请求
请求服务端资源服务器
服务端接口(OauthController.class.php):/accessTokenURL()
客户端(OauthSdk.class.php):/accessTokenURL()
Rest API
4)授权流程
请求服务端授权服务器
验证Access Token
3、服务端OAuth 2.0工作流程
验证是否信任客户端
获取用户资源信息
重新生成验证码
服务端(MemberController.class.php):/login()
服务端接口(ThinkOAuth2.php):/checkClientCredentials()
服务端登录验证
SSO API
是否登录?
退出授权
API地址:/ucenter/resources/getUserInfo
服务端接口(ResourceController.class.php):/getOpenID()
数据访问层
用户
服务端接口(OAuth2.class.php):/grantAccessToken()
跳转至用户授权地址
访问第三方应用资源
(4)生成Refresh Token
进入登录页面
1)数据库表E-R图
客户端(OauthSdk.class.php):/getAccessToken()
资源服务接口
是否授权?
服务端 API 接口
(2)获取用户资源信息
开放平台验证应用
(5)生成AccessToken并保存
生成OpenID
验证
API控制分发器
返回用户信息
Request Info Url
C++
第四步:
生成地址
请求服务端Access Token
Request Access Url
通过Access Token、OpenID及API接口地址
提示登录、给予授权
输入用户名、密码、验证码
1)开放平台系统分层架构图
JS
生成临时Token
请求用户的OpenID
IOS
获取Access Token
进一步操作
服务端接口(ResourceController.class.php):/checkAccessToken()
3)认证流程
Auth API
涉及到的文件列表一、服务端:1、OauthController.class.php2、MemberController.class.php3、ThinkOAuth2.php(继承4)4、OAuth2.class.php一、客户端:1、callback.php2、config.php3、OauthSdk.class.php
API地址:/ucenter/resources/getOpenID
MariaDB
请求Access Token
Request User Url
客户端(OauthSdk.class.php):/getUserInfo()
2)客户端请求Access Token流程
4、数据库相关图
通过认证
服务端接口(OAuth2.class.php):/getClientCredentials()
第二步:
(1)得到客户端凭证
请求 OAuth 验证服务器 进行验证
得到用户信息:{ \"status\
服务端(OAuth2.class.php):/$this-genAuthCode()
4、开放平台相关图
第三方应用请求访问令牌(AccessToken)
获取用户OpenID
Redis
生成Access Token:array(5) { [\"access_token\"] = string(32) \"35ac8a078704e73fa361265c04e5307c\" [\"expires_in\"] = int(3600) [\"user_id\"] = string(3) \"116\" [\"scope\"] = NULL [\"refresh_token\"] = string(32) \"971e296d7f98dd8c490dcd5cb9eb1bd6\"}
得到Access Token:{access_token: \"6a240964bd014f823c62855559d57a7e\
得到Code:6b6494cdf21e48147d97af7d25c2fb4c
服务端生成带Code信息的回调地址:string(132) \"http://xxx/account_client/callback.php?code=6b6494cdf21e48147d97af7d25c2fb4c&ssid=MmVnYzgzMnVsbXBlZ2gxdjI0YjhhMG5rNmJqb2s0YjA=\"
(3)验证授权类型
2、OAuth 2.0协议
Callback API
2)应用接入流程图
数据封装
接入SDK开发包
服务端部分
需要access_token参数
提供服务
请求用户资源信息
Request Token Url
是否合法?
服务端接口(ThinkOAuth2.php):/checkRestrictedGrantType()
(1)生成Code信息
需要access_token参数[openid]
服务端接口(ResourceController.class.php):/getUserInfo()
客户端 SDK 开发包
(2)验证客户端凭证
OAuth授权模块
PHP
数据持久层
1、OAuth 1.0协议
生成Code信息并保存数据库
日志记录
服务端(ThinkOAuth2.php):/getUrl()
Node
服务端接口(OauthController.class.php):/authorize()
申请接入
服务端接口(ThinkOAuth2.php):/setAccessToken()
是否通过?
提示错误
0 条评论
回复 删除
下一页