谈到OAuth,不少人天然而然的就会想起SSO,还有些人会想起REST。其实,OAuth与SSO和REST并无太深的关系,它们分别有其不一样的适用场景。接下来,咱们就看看它们之间的区别与联系是什么?安全
OAuth与SSO的区别?ide
OAuth是一种受权协议,只是为用户资源的受权提供了一个安全的、开放而又简易的标准。OAuth 2.0为客户端开发者开发Web应用,桌面端应用程序,移动应用及客厅设备提供特定的受权流程。网站
SSO是在多个应用系统中,用户只须要登陆一次就能够访问全部相互信任的应用系统。资源
通俗的讲,OAuth是为解决不一样公司的不一样产品实现登录的一种简便受权方案,一般这些受权服务都是由大客户网站提供的,如QQ,新浪微博,人人网等。而使用这些服务的客户多是大客户网站,也多是小客户网站。使用OAuth受权的好处是,在为用户提供某些服务时,可减小或避免因用户懒于注册而致使的用户流失问题。开发
SSO一般处理的是一个公司的不一样应用间的访问登录问题。如企业应用有不少业务子系统,只需登录一个系统,就能够实现不一样子系统间的跳转,而避免了登录操做。产品
OAuth与SSO的应用场景不一样,虽然可使用OAuth实现SSO,但并不建议这么作。不过,若是SSO和OAuth结合起来的话,理论上是能够打通各个公司的各个不一样应用间的登录问题,但现实每每是残酷的。it
OAuth与REST的关系?微博
谈到REST的安全性问题时,不少人容易联想到使用OAuth来解决这个难题。其实,REST与OAuth有着天壤之别。class
OAuth为网站(系统)用户受权第三方应用(网站、系统)访问本身在网站(系统)中的隐私数据提供的一种规范。登录
REST初期理念是“每一个不一样的子资源都有一个绝对惟一且不重复的URI地址”。它仅仅是一个URI资源而已,并且是无状态的,所以REST并不适合作须要受权的应用。偏偏相反的是,在使用OAuth受权时,一般会使用REST API来完成受权操做。