1,oauth2.0 解决什么问题?
回答这个问题之前,我们先有几个基础概念,资源拥有者,资源服务器,授权服务器,第三方平台。
资源拥有者,比如自然人张三。
资源服务器,比如微信应用程序,张三有一个微信账号,微信里保存了张三的个人数据。
授权服务器,资源服务器认可的授权服务器。
第三方平台,比如第三方开发的微信小程序。
如果没有oauth2.0时,张三玩第三方小程序时,小程序想要获取张三在微信里保存的个人信息,比如头像昵称,张三就必须提供自己的账号密码给第三方小程序。第三方小程序保存张三的用户密码用于访问张三的微信数据(账户密码密码提供给了第三方)。看到这里各位是不是就觉得不靠谱了,头像昵称还不算敏感,微信钱包是不是会让你捏把汗(造成第三方可以访问用户所有信息),张三在玩了一段时间的小程序,不想玩了,只能通过修改微信密码来终止小程序获取张三微信数据的能力(难以撤销授权)。
oauth2.0 怎么解决上面弊端呢?
oauth2.0 引入授权层即授权服务器,授权服务器给第三方平台颁布凭据access_token,这个凭据不同于资源拥有者的账户密码凭据,伴随access_token的颁发还会有scope,expired_time等属性。
第三方平台凭借access_token从资源服务器获取信息,资源服务器返回信息前,可以从授权服务器鉴别access_token是否在有效期,是否有权限访问当前信息。
这样就可以避免将账户密码泄露给第三方平台,而且用户可以随时退出授权服务器用以撤销access_token,而不用修改密码。