作者在京东做OAuth 的研发工作,OAuth2.0 现在成为三方验证的标准,他是从OAuth1.0 发展而来,OAuth1.0由于在设计上的缺陷,第一它有安全隐患,而且它对所有场景都一样的复杂,所以Auth2.0采用了多种授权模式。
我们在平常的使用和开发中已经离不开第三方授权,越来越多的应用出现,而用户根本不可能记住不同系统下的账号和密码,如果使用相同的账号的密码那如果一个系统被泄露,那你所有应用的账号都被泄露了,所以近年来很多的应用使用像OAuth这样的第三方验证机制,比如微信和Facebook,OAuth 2.0既包括了验证还包括了授权方式,你既可以用来做第三方验证,也可以用来做内部系统的授权。他既能保护账号的安全性,同时提供了用户的便利性。
1. 授权码方式
授权码使OAuth2.0 标准的方式,也使最复杂的方式。首先由第三方引导用户到授权服务器,授权服务器通过验证生成授权页面,用户验证后得到授权码,然后再把页面二次重定向到第三方软件,第三方软件再由后端代码用授权码去访问授权服务器得到访问令牌. 当第三方有了令牌就可以访问受保护的资源了。里面有个问题,为什么我们要生成授权码,为什么不能之间生成访问令牌,这里面有个问题就是如果之间生成令牌页面无法再跳回到第三方软件。
2. App如何授权
那手机App之间如何许可呢,比如微信授权京东登录,过程和授权码类似,只是参与交互的从授权服务器变成了微信客户端,由微信App客户端从微信服务平台拿到授权码,再把授权码给到京东的App,京东App的后端再去换访问令牌。
3. 其他授权方式:
授权码的方式比较适合网页登录的情况,当然OAuth还有其他几种方式也适应不同的情况,比如两个服务都属于同一个公司,可以采用资源拥有者凭据许可,浏览器嵌入第三方JS 代码可以采用隐式许可。
我们在平常使用三方登录,在工作中也会使用OAuth2.0的技术,理解技术原理让我们能更好的知道如何去实现和应用。
推荐指数 4.3 颗星