如何设计SSO方案?和OAuth有什么区别?
--楼兰带你聊最纯粹的Java
如果面试问你,你会做一个权限系统吗?那你肯定会说做过。不就是各种登录、验证吗。我做的第一个CRUD应用就是注册、登录。简单!但是,如果问你在工作中真的做过权限系统吗?其实很多人都只能默默摇摇头。因为在很多真实项目中,权限系统可能不是最复杂的,但一定是牵连最广的。因此往往大型项目中真正去做权限系统的,都只是非常核心的一小部分人。而如果你的应用越来越复杂,作为安全门户的权限系统也会随着变得更加复杂。各种方案层出不穷。比如, 把SSO和OAuth这两个聊的最多的名词放到一起,你真的分清楚吗?
一、SSO与OAuth
首先你要清楚, SSO和OAuth都是分布式场景下比较常见的权限认证方案。然后,这两个方案,在项目落地时,很多项目都会用SpringSecurity这一类的权限框架实现。所以,这两东西他们其实很像,但本质上,他们完全是两个不同的方案,解决不同的问题。
SSO是Single Sign-On,单点登录。主打的是统一。允许用户通过一次登录访问多个相互信任的系统,无需重复输入凭证。比如,你登录了淘宝后,访问天猫,自然也是登录的状态。而如果在淘宝退出登录后,访问天猫也同时退出登录了。
OAuth是Open Authorization,开放授权。主打的是开放。允许用户注册的一个账号,可以用来登录多个不同的平台。他们有很多本质的区别。比如,你可以用一个微信账号