• 产品化思维之用户认证和用户授权


    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)

  • 相关阅读:
    Shell重新学习(忘光了)
    vim 设置默认显示行号
    maven学习资料(三)
    maven:新建的maven工程需要添加一下插件
    Spring框架:第五章:Spring EL表达式
    Spring框架:第四章:Spring管理数据库连接池
    Spring框架:第三章:对象的生命周期及单例bean生命周期的11个步骤
    Spring框架:第二章:IOC依赖注入及40个实验
    Spring框架:第一章:介绍和准备工作
    MyBatis框架:第十一章:mybatis 逆向工程
  • 原文地址:https://www.cnblogs.com/senline/p/user_authx.html
Copyright © 2020-2023  润新知