对OAuth2的一点理解

最近项目里要用到OAuth2.0 做用户统一验证,加上项目的整体框架是用Spring Boot + Dubbo 微服务搭建的,所以这次OAuth2.0 的实现框架就使用了Spring自家的Spring Boot Security OAuth2。

OAuth2作为OAuth的第二个版本,被国内外很多大的软件公司所使用,如国内的BAT,国外的GitHub,Twitter,等等等等。OAuth2为不同系统之间的统一权限验证提供了安全保障,你们可能会问,统一权限验证不是有SSO么?为什么不用SSO而用OAuth呢?这个问题的回答其实很简单,因为SSO的验证机制的前提是请求方知道响应方的拥有该资源的用户的用户名和密码,即用户本身登录提供资源的系统来获取数据。而OAuth提供一种Token机制,即用户登录验证服务器授权给第三方服务,第三方服务拿到的只是OAuth服务器为它生成的一个Token,然后第三方服务拿着这个Token去资源服务器请求资源。这么说可能比较难以理解,下面通过一个例子说明OAuth的好处:

比如说我们登录CSDN的时候,登录区域的下方会有许多“第三方登录”按钮。当我们点击一个按钮进去的时候,会跳到响应的服务提供者的授权页面(请记住,授权是在服务提供者的网站下完成的,如QQ,百度)。我们在授权页面授权后会跳回到CSDN的登录界面,这时我们发现我们已经登录成功了,CSDN也获取了我们在QQ上的一些信息。那么CSDN是如何获取到我们的信息的呢?我们回到授权界面,如果仔细查看授权页面的URL参数,我们会发现有一个redirect_url与一个clientID,这个clientID就是CSDN在腾讯那边的一个“身份证”,而redirect_url就是腾讯验证成功后重定向到的页面,不容置疑,这个界面是CSDN的猿友友写的。腾讯的验证界面在验证成功后会将页面重定向到这个网址下,并且会在后面加一些参数(如Token,QQ号)等等。然后CSDN就可以拿着这个Token去腾讯的资源服务器取资源(用户名,基本信息等等)了。


先写这么多,上班时间多做手指运动,有时间把实际的开发心得再分享分享。


你可能感兴趣的:(对OAuth2的一点理解)