senline

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2017/2/14

----------------------------------------

用户认证和授权的目的是让正确的人,做有权的事情。
认证和授权是两个概念,英文上分别是:authentication,authority。
前者是确认你是不是真正的你,确认访问者的身份,防止冒名。后者是确认你有没有权限做这个事情。
一、用户认证
用户认证一般有几种方式,但总得分为几类:

在真实世界,对用户的身份认证基本方法可以分为这三种:

(1) 根据你所知道的信息来证明你的身份(what you know ,你知道什么 ) ;
(2) 根据你所拥有的东西来证明你的身份(what you have ,你有什么 ) ;
(3) 直接根据独一无二的身体特征来证明你的身份(who you are ,你是谁 ) ,比如指纹、面貌等。
在计算机世界中也同样是这几种方式。

1,用户账号和密码(what you know)
这个是最常用的方式,也是最传统最古老的的方式。在使用系统之前,首先需要登录,输入账号和密码。如果账号不存在或者密码不正确,认证失败,不可以进入系统,更不可以进行任何操作 。现在用的大多数系统都是采用这种认证方式,比如淘宝,sap系统,我们开发的所有系统,都是这样的。
最一些安全要求更高的系统,比如支付宝,可能还需要手机短信验证,以确保当前登录系统的是当事人。这是另外一种形式的账号和密码(手机是账号,短信验证码会动态密码)。
2,数字证书(what you have)
数字证书一般用于网上银行客户端登录,设计资金的内部审核审批系统。要求登录人登录时,除了账号密码之外,还要有电子证书。电子证书是电子证书颁发机构发送给特定的人。电子证书可以安装在电脑上,也可以存放在U盘上,称之为UKey。前者方式,只能是在特定的安装了证书的电脑设备上登录系统,后者则可以在任何电脑上登录,前提是吧ukey查到电脑的usb口上。
3,其他方式(who are you)
生物识别技术:指纹(windows登录,考勤系统,门禁),虹膜;声音,脉搏
认证卡(门禁卡,宾馆电子钥匙)
以上的认证物组合,统称为 passport。passport 是系统的通行证。

二、用户授权
通俗点讲,用户授权是赋予用户执行某个功能,操作某些数据的权限。抽象点讲就是,谁对某个资源有什么操作的权限。
比较常见的是我们系统分配的菜单功能,谁谁可以填写报销单,谁谁可以审批报销单,谁谁可以打开某个报表等等。用户授权,是在用户认证完成后,在使用、调用某个功能时验证,以防止用户访问未经授权的功能和数据,或者说对数据进行未经授权的操作。授权要比用户认证复杂,因为他涉及到系统的操作功能,和操作的数据内容。而且操作的方式非常之多,变更,新增, 修改,删除,打印,查看,等等。而且实际业务中,权限控制的方式、维度非常之多。目前用户授权方式有一些成熟的解决方案,但是实现都很复杂,大家可以研究一下。
在具体实现时,主要分两类:
用户授权的本质就是对哪些资源可以做什么。
1,你可以使用哪些功能。
因为某个功能就是对某个资源的某些操作,因此 通过授权你能使用那些功能,就可以控制对资源的某些操作。比如报销单功能,这功能里,可以创建报销单,查看报销单,修改报销单,删除报销单,提交报销单等等的 针对 报销单这个资源的 种种操作。
2,直接定义你对某些资源有那些操作权限。
这种定义方式, 就直接触及到授权的本质了。
首先要识别出系统的可控制资源。对windows系统来讲,资源的含义相当宽泛,比如文件,各种设备(网卡,磁盘,显示器,打印机等等);对我们的mis系统来讲,资源包括:各种表单,各种主数据,各种结果数据(应收款余额表)。对资源的操作有:创建(增加),删除,变更,查看,打印,等等。识别出来后,就可以在 资源-操作-用户(角色)这个矩阵上进行授权(打钩了)。权限控制就返回真假的三元函数:f(角色,资源,操作)。
从理论上看这个模型比较简单,但是再具体实践中,还是相当复杂的。

可以参见 产品化思维之基于资源属性的权限控制方案(ABAC) - 森蓝2010 - 博客园 (cnblogs.com)

 

posted on 2022-03-02 10:38  森蓝2010  阅读(173)  评论(0编辑  收藏  举报