分享

漫画:鉴权与安全访问控制的技术血脉

 编程一生 2022-03-09

用历史观来看一种技术的演进,称之为“技术血脉”。

    十年前,静儿做的是传统软件的项目,都是企业定制的项目,系统安装在企业的机器上,通过硬件来做物理隔离。系统的安全访问控制靠操作系统来保证。

    在互联网大潮中,B/S逐渐流行,对于这类从传统软件转化来的项目,一般采用的是用户名密码登陆的鉴权方式。为了对用户身份做认证,一般采用的是邮箱认证。09年的时候,静儿还在人人网,当时在研究自动化测试。有段时间有个小公司在搞活动,新注册用户可以抽奖,中奖率特别高。静儿就用自动化测试工作批量注册邮箱和此网站用户,刷出来好多小礼物。充分验证了自己的自动化测试工具的实用性。

    当时,虽然各个网站还没有开始使用验证码。但是静儿那时候做过爬虫,对于爬虫这类攻击,很多网站还是采取了一定策略的。最常见的就是对IP做流量控制。比如半小时内不能点击超过2万次,超过则自动返回访问受限制,半小时后自动恢复。如果这件事情反复发生,被后台工作人员检测到,可以加入黑名单。

     用户注册有一部分是“连携”的,这是个日语词,中文应该叫合作吧。就是下面的“其他方式登录”。这种实现到现在为止业界也还是采用oauth来实现,静儿八年前的项目经历完全可以排上用场。

    再后来网站对于用户注册开始使用验证码了。验证码的实现类似于分布式session的实现,都是在服务端保存一个客户端key对应的value。只是验证码的value只是一个字符串。静儿那时候都是采用分布式缓存作为服务端验证码的存储工具。

    在人人网工作四年之后,静儿出去面试,朋友给介绍了一个做PaaS的公司,按现在的话说就是云CRM。当时是在公司楼下一家咖啡馆,他们CTO带着一个兄弟过来,请我喝咖啡,让我聊聊访问控制,因为他们当时这块没有很好的解决方案。我就说了一下RBAC(基于角色的访问控制)的思路。

    静儿去了一家创业公司,因为项目规模小了,公司也没有统一的基础设施,权限认证这些都是自己来实现。本着只采用成熟的技术的原则,对于后台管理,当时静儿用的是Spring Security。Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全访问控制功能解决方案的安全框架。

    它支持认证一体化如下认证技术:

  1. HTTP  BASIC authentication headers(一个基于IEFT RFC的标准)

  2. HTTP Digest authentication headers(一个基于IEFT RFC的标准)

  3. HTTP X.509 client certificicate exchange(一个基于IEFT RFC的标准)

  4. LDAP(一个非常常见的跨平台认证方法)

  5. Form-based authentication(提供简单用户接口的需求)

  6. OpenID authentication

  7. Computer Associates Siteminder

  8. JA-SIG Central Authentication Service(CAS,一个开源的单点登录系统)

  9. Transparent authentication context propagation for Remote Method Invocation and HttpInvoker(一个Spring远程调用协议)

    两年后,为了实现7年前定的“要作为技术人员去国外出差”的目标,静儿入职了乐视。自然,全公司统一独立部署的SSO(单点登录)是必不可少的。严格来说,静儿那时候做的限流也是安全访问控制的一部分。

    新美大这边的鉴权与安全访问控制就比较多了。SSO鉴权作为一个基础组件提供客户端和服务端自然是最基本的。在此基础上添加了新美大自研的基于角色权限控制。但是对于一些接口维度的,根据实际情况,会采用一些BA认证。比如根据token来指定配额。对于一些底层服务,内部也肯定会用到TLS做认证。

后记

    大家可能注意到静儿的前几篇文章比较注重自下而上思考,自上而下表达的结构化思维,而本篇是历史序的纵向思维。

    作为技术人员,从各个维度对技术对项目做思考是一种基本意识。武功境界中所谓“人剑合一”的原理也是多练习多思考的结果。而技术人员想达到“人技合一”必然要从各个维度积累沉淀。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多