对OAUTH协议的认识

一. OAUTH是什么

   OAUTH是Open Authorization的简写。OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。

通俗地说,就是当我们想把自己系统的某些功能暴露给第三方系统进行调用,并且需要对第三方系统的调用设置一定的访问权限。

这样一来这两个系统的开发人员之间就得做系统的对接,

但如果本方系统按照OAUTH协议的标准进行了相应的实现,那么这个对接的过程就不需要双方进行额外沟通。调用方只要按照标准的实现进行对接就可以了。

OAuth协义有两个版本1.0 和 2.0 ,2.0 相对比较简洁是目前比较流行的做法。具体的实现细节大致如下:

  1. 由本方系统向第三方系统提供公钥和clientId

  2. 第三方系统的某次访问以http形式携带公钥和clientId访问本方系统的OAUTH授权中心

  3.授权中心将对合法的请求返回一个授权code

  4.第三方再携带code再次访问授权中心用code去换取令牌,这个过程应走https的加密通道

  5. 获得令牌后,就可以携带令牌访问本方系统开放给第三方系统的API服务了

二. OAUTH和SSO单点登录的区别

  oauth2解决的是服务提供方(微信等)给第三方应用授权的问题,而sso解决的是大型系统中各个子系统如何共享登陆状态的问题。
两者都是基于分布式系统,涉及到多个角色,但是不同的是,oauth2是一种具体的协议,sso可以说是一种技术,可以用cookie实现,

甚至也可以用oauth2实现(虽然不是很好),比如oauth中的服务提供方可以充当sso认证中心,oauth中的第三方应用也可以是sso中的子系统。

三.在微服务中何时可以考虑使用OAUTH认证

除非要把自己系统的功能暴露给第三方访问(即暴露自己的注册中心),且不需要双方进行额外沟通,本方才需要实现oauth2授权

四.实现微信帐号登录自己系统的原理

此时微信一方应实现oauth2授权,我们的系统通过调用微信的授权获得令牌,然后用令牌去访问微信的相关接口(例如获取用户名等等)来实现微信用户在本方系统的登录和访问。

参考资料:

 https://www.cnblogs.com/AloneSword/p/4167573.html

猜你喜欢

转载自www.cnblogs.com/hzhuxin/p/10462782.html