Skip to content
谁与争辉hui edited this page Feb 15, 2015 · 5 revisions

OAuth 授权(authorization) 开放网络标准,允许用户让第三方应用访问该用户在某一网站上存储的隐私资源(照片,视频,联系人列表)。无需将用户名和密码提供给第三方应用。

最开始于Twitter ,2012 发布OAuth 2.0,但是不想下兼容OAuth 1.0

####认证流程


######第**********************|---(A)Authorization Request--> [ Resource(用户)

######三**********************|<--(B)Authorization Grant------ Owner]

######方:point_right:Client:point_left:********|---(C)Authoization Grant------> [Authorization

######应 *********************|---(D)<--Access Token------------Server]

######用 |---(E)Access Token------------->[Resource ######***|<--(F)Protected Resource------- Server]


####授权模式:授权码模式,简化模式,密码模式,客户端模式


#####:sparkles:授权码模式 ######HTTP Basic Authentication 访问一个特定的域名或者url时,需要通过用户名与密码来进行授权查看,浏览器弹框要求输入名称和密码,在POST 认证是,在Authorization中加入“Basic 用户名和密码的Base64加密字符串” String userNamePassword="username:password"; String base64 = Base64.encodeToString(userNamePassword.getBytes(),Base64.DEFAULT); HttpUriRequest httpUriRequest= new HttpGet(); httpUriRequest.addHeader("Authorization","Basic"+base64); ######Access Token Content-Type:application/json;charset=UTF-8//返回结果类型和编码 Cache-Control:no-store //授权服务器告诉客户端无缓存模式,用于浏览器,自己客户端中需要保存令牌 Pragma:no-cache { "access_token":"",//认证令牌,用于请求资源 "token_type":"", "expires_in":3600,//有效时间段 "refresh_token":"",//刷新令牌,客户端利用他到授权服务器刷新,以前令牌失效 "example_parameter":"**", } #####:sparkles:简化模式:用于手机,客户端,浏览器插件 #####:sparkles:密码模式:用户将密码交给客户端,客户端用密码访问授权服务器,返回Token,这要求用户对客户端及其信任 #####:sparkles:客户端模式:客户端直接发起auth认证,服务端返回Token。


####更新令牌(期限过后,失效)


#####方法1,重新完成一次完整授权,需要手动授权 #####方法2,跟新令牌(通过参数granttype授权模式,refresh_token早前收到跟新令牌,scope申请权限范围) ####问题汇总 #####1,State 字段作用:在授权服务器同时接收两个用户信息时,为了将授权码正确给相应用户,需要接收客户端的state参数,再返回给指定用户 #####2,临时授权过程(及时截取,不会泄露用户信息) ######1>,redirect_url 安全性 ######2>,减收认证的门槛

Clone this wiki locally