微服务实践目录,可以参见连接。
背景
对于软件系统来说不管以怎样的形式服务于人,最终都是为了人们更舒适,更便利,更高效的生活而出现的。所以,对于软件系统来说识别出用户,并给用户提供相关的便利就是软件系统的最终目标。
对于人们直接能看到的软件系统,人们能直接感觉到软件系统再对其进行识别和认证的工作。但有很多软件系统是一般的用户看不到的,这些系统里面也有认证不过人们不关心。例如:在使用Wifi的时候,显示的需要知道Wifi的密码才允许登录,隐式的需要IP才能够进行通信。那DHCP系统是不是需要对设备进行认证,认证过程是什么样的?
在显示生活中有很多类似的例子,再比如:打电话的时候我可以通过电话号码知道对方是谁,但是通话过程中通信的链路是怎样建立起来的,这中间是不是有认证的过程,是不是有授权的过程,是不是有计费的过程?
这些就是软件在用户不感知或无法感知的情况下对用户进行了识别与认证的工作。并未客户提供了服务。这就是用户管理的意义。
概述
在用户管理的过程中AAA是用户管理的重中之重。我们也会对AAA进行大概的介绍。但除了AAA之外还有一部分比较重要的内容:用户会话管理。用户会话管理主要是技术上的实现,跟最终用户的关系不太大或者最终用户看不到。所以,在进行用户管理时一般向用户展示的内容提到级别比较高,用户注意不到的内容就省略了。
大概说明这四个部分的关注点:
- 认证(Authentication):关注用户的身份。认证是通过技术手段对用户的身份进行验证,识别其是否为合法用户。
- 授权(Authorization):关注用户的权限。授权是两个过程一个是授予权限,另一个是鉴权。对于特定用户是不是要授予某些权限,并在用户使用过程中鉴别这个服务的权限是否授予这个用户了。
- 计费(Accounting):关注用户对服务的使用情况。记录用户使用服务的情况,针对使用情况进行计费。
- 会话(Session):关注用户持续在线。关注用户在线情况,以及在线生命周期情况。
具体介绍
在上面所介绍的用户管理四部分中,每一个部分都可以独立于其他部分独立使用。现在业界有很多独立的解决方案出现。有专门负责认证部分的SSO,有专门负责鉴权的Apache Shiro,有专门负责计费的PAAS计费系统。也有很多联合技术,例如OpenAPI系统的用户管理,鉴权,计费的处理。
对于不同的使用场景来说,独立使用四部分中的一部分还是联合使用其中的几部分都是需要根据具体的使用场景进行分析与设计的。为了更清晰的介绍四部分,下面会具体的介绍着四部分。并且会在之后连续的几篇文章中深入的介绍每一个部分。
用户认证
对于软件系统来说,外部所有的利益相关者都是需要定义出来的。那对于用户管理系统的用户的定义具体是什么样的?可以使用一个更加能够体现出它的特点的词语:认证实体来表示。
那么定义出用户管理系统的用户之后,那就定义认证过程的动作。认证过程就是通过验证认证实体的某些信息达到认为《认证实体》是软件系统中存在的《认证实体》的目的。
软件业界用户认证思路:
- 统一认证
通过统一的认证中心认证用户。通常在企业内部建立一个统一的用户管理与认证中心,由认证中心负责用户的认证。方便企业内部统一管理用户。
- 第三方认证
第三方保存用户认证方式,以及用户数据。通过互联网上的用户信息达到快速登录,降低复杂度的方法吸引客户使用系统。
- OpenApi
在互联网上免不了和其他的公司有合作有交互。OpenAPI是在互联网上程序间的认证方式。
用户鉴权:
对于通过认证的认证实体来说,认证实体使用软件系统中的某个服务。系统需要判断认证实体是否对这个服务有操作权限,数据是否允许被访问等。更有甚者,对用户的服务级别都有定义。例如:
对于权限控制比较重要的两项:
- 功能权限
一般的系统上都比较关注功能权限部分。也就是功能能不能被某些认证实体使用。
- 数据权限
数据权限规定数据是否可以被认证实体使用。
- 授权权限
功能、数据使用的权限是否可以给认证实体的权限。那些权限归特定的用户分配都是由授权权限控制的。
用户计费:
现在很多互联网企业都对C端用户实行免费使用政策。采用B2C或者融合后的B向C提供服务都是需要一个收费模式的。
在很多Iaas,Paas,Saas中最常采用的计费方式是租户计费方式,而像印象笔记,Processon等直接面对C端用户的更长采用的用户计费模式。
- 租户计费模式
- 用户计费模式
- 资源计费模式
- 服务质量计费模式
前两种都是比较常见的。资源计费在用户使用资源时才会计费,这是云基础设施推出时的目标。服务质量计费可以简单的理解为京东Plus会员,电信服务商提供的带宽。
会话管理:
会话保持,会话保存,会话记录都是会话管理需要管理的内容。它们每个项可以在不同的领域发挥作用。
总结:
接下来几篇文章我们会先讨论用户管理的内容,然后在进行用户管理的一些技术实践。在实践中介绍各种技术的不同点,方便之后在实际项目中选用。
参考:
权限管理方式:
协议: