2014年11月

理解 oAuth 协议

很多网站都提供第三方登陆(比如weibo)的功能,这样就免去了用户的注册步骤,同时还能带来用户的社交关系。

为了确保用户的账户安全,肯定不能在第三方网站记录用户名和密码。这时就要使用到oAuth协议了。

具体的流程是这样:(这里假设在XX网使用weibo登录)

  1. XX将用户引向weibo的授权页面。需要带上client_idredirect_uri,比如:
https://api.weibo.com/oauth2/authorize?client_id=1354552709&redirect_uri={url}&response_type=code
  1. 用户同意授权
  2. 页面返回之前的redirect_uri,这是weibo的授权服务器会给加上code(授权码)refer参数,比如:
http://www.lecai.com/user/sinaweibo/callback/?referer={url}&code=4c07a1c09d168ffa2f9664af54ea0162
  1. 然后XX再用这个code值和client_id以及redirect_uri向认证服务器发起申请access_token
  2. weibo认证服务器核对参数确认无误后,返回一个包含access_tokenrefresh_token和json数据

然后有了这个access_toke后,就可以访问用户weibo的信息了。

这个流程就相当于在客户端(XX)和服务提供商(weibo)中间加设了一层“授权模型”,由此将用户和客户端剥离来开,达到安全登陆的目的。