在物联网时代,许多设备都将接入网络,这也意味着除了本地查看设备数据,以及将数据上传到后台或云端外,还需要考虑集中的用户鉴权和管理。
举个例子来说,一个设备在本地可以提供web的数据查看方式,也可以通过后台服务器去查看已经上传的数据,但是在服务器上集中查询显然是一个不明智的行为,毕竟它已经要承载越来越多的设备接入,如果再用来处理普通的用户数据查询,服务器很可能不堪重负。另外,通常后台或云端也只能存储一些汇总信息,把每个时间戳的数据流都记录下来显然也是一种不经济的行为。此外,放任本地的用户在设备端管理用户的鉴权也可能会带来安全隐患,一个最佳的处理办法是:把普通用户的登录和授权行为统一在云端或后台进行管理。这就带来了本文需要讨论的话题,如何有效地实施单点登录和鉴权控制。
单点登录简称SSO(即英文全称Single Sign On的缩写),它可以避免多个系统重复建设用户认证管理功能。SSO是一个将用户身份和认证集中管理的标准规范。简单的 SSO 的体系中,会有下面三种角色:
- User (多个)
- Web 应用(多个)
- SSO 认证中心( 1 个)
单点登录管理系统的实施办法有许多种,也有许多开源软件可以实现。比如CAS,OpenAM等。这些不同的系统采用不同的语言,并支持不同的特性,实施起来难易程度也不同。有必要充分了解各种方案的特点,以便挑选最优的,运维成本最低的方案来实行。因此,有必要对一些基本知识做梳理,以供参考。
一、授权和身份验证基础知识
认证意味着证实某个用户是他所声明的那个人;授权意味决定一个身份确定的用户能够访问那些资源。一般应用需要先认证用户身份,然后依据用户身份再授权,二者需要联合使用。作为面向客户的物联网应用系统,用户可以登录服务网站来查询相关汇总数据,同时又可直接访问设备来查询单台设备的信息。采用SSO方案后,用户只需一次登录,就可以访问所有设备的web界面进行细节查询,而不需要一个个地登录,这样显然对用户是很方便的。
Oauth、openID、SAML是单点登录和统一认证中主要的三个身份认证授权的协议,是解决认证授权问题的。它们被称为单点登录的三驾马车。这些协议已经有了各种语言版本的实现。通常SSO方案中,可以支持多种ID的认证标准,我们必须挑选所有应用都能支持的方案。
---未完待续