OAuth

OAuth作为现在主流的标准还是经常需要用到的,想使用新浪微博之类的平台,做第三方登录也是一定要了解OAuth的。虽然各个平台都有提供SDK,但其实OAuth2.0实现起来非常简单,自己手写一遍成本并不高,公司在系统架构上也使用了OAuth标准来实现单点登录。

这里拿微信的OAuth做简单说明。

如图所示,

  1. 一名已经注册了微信的用户需要登录一个第三方应用。
  2. 第三方应用向微信请求登录。
  3. 微信要求用户确认。
  4. 用户确认后,页面从微信跳转至第三方应用之前在微信设定好的Callback页,同时带有一个code参数。
  5. 第三方应用服务器凭借code,还有自己的app key及secret key去去微信服务器换取token。这里注意,由于安全,一般会给secret key加密。比如和code拼接在一起做MD5。
  6. 第三方应用获取到了token,登录成功,并且可以凭借token调用接口。

使用OAuth有很多好处,作为认证节点或者认证平台,不需要把用户的用户名密码暴露给别人,这样保证了密码的安全。如果有一个节点或者第三方站点沦陷,这里只是丢失了一部分token,虽然对方有token可以做很多事,但Auth方一旦发现,可以立刻无效这些token以保障安全,可以在代价比较小的情况下最快速的保障安全。

发布于: March 23 2015

  • 标签:
blog comments powered by Disqus