Day04 - 【入门篇】浅谈身份验证与授权(2)

本系列文之後也会置於个人网站


实际上,在昨天已经将多数基础都已经解释过了,不过我想到还有一些东西可以再多做补充的。

对啦! 担心弹药不足,把一篇拆成两篇来啦!?

没有身份识别的存取控制

在我们拆分的整个流程中分成:身份识别、身份验证、授权、存取控制。但现在,你将Web App登出後再登入一次,你会发现「授权」的部分不见了!
但我们不会立刻来讨论这个部分。先来说说身份识别。

不觉得,身份识别在整个流程之中非常鸡肋吗?也就只是将你这个「自然人」与系统中存在的「帐号」对应起来。
也确实如此,在这样的拆分中,身份识别对於存取控制并不是必要的。在後来已MAC爲基础发展的存取控制框架,也多不直接与帐号相关。

别担心,之後会提到什麽是MAC(强制存取控制, Mandatory Access Control)。

不过还有一个更直接没了这个流程的例子。在以「单人使用」作爲设计的系统之中,我们只需要拿到钥匙就可以进行存取。

什麽?你说现在还有这种系统吗?其实还真不少呢,加密上锁过的压缩档案,上锁的部落格文章。还有授权之後的流程,可能也不包含身份识别。

此外,还有 你的手机 。他可以只设定PIN密码、图形密码,而不需要输入帐号,也可能不必要登入Google、Apple帐号。

虽然当今的手机系统里,并不是只有一个帐号,但以使用习惯来说,它确实是以单人使用作爲设计的。
这也有些说明爲何他会是当今一个相当重要的工具。有相当多的二阶段验证(2FA)和手机有关联,像是简讯验证、TOTP。

这并不是说非手机不可。但整个概念认爲,只有你的手机接收的到简讯;只有你的手机存在TOPT的密钥种子。
然後只有你会使用你的手机。

更多生活上的例子

生活上不乏有授权与存取控制的例子。

- 你把家钥匙多拷贝几份给家人(授权)。让家人在回家的时候可以使用钥匙开门(存取控制)。
- 你到了游乐园售票台购买了门票(授权)。在门口给验票员後在手背上盖了一个章(授权),他告诉你在某段时间内,依照这个章可以自由进出。然後你就进去游玩了(存取)
  - 你遗忘了东西在车上。回到停车场,用车钥匙将车门打开,拿去里面东西(存取控制)。
  - 然後回到游乐园门口。验票员看了看你手背上的章,然後让你通过(存取控制)。

零知识证明(Zero-Knowledge Proof)

接着是有点扯远的题外话。

我觉得使用权杖(Token)存取的过程,很像是零知识证明(Zero-Knowledge Proof)的概念。

我知道我的密码很重要,所以我不轻易使用我的密码登入。现在我要存取系统,我必须像系统证明:我拥有正确的密码。

而我身旁可能有人在观察,所以我不能轻易使用我的密码。所以在这之前,我跟系统约定好几组使用过一次後就作废的密码(OTP, One Time Password)作爲登入。
系统在看到以後,将其标记然後放行让我进入。

现在,我能够证明我有正确的密码。

a zero-knowledge proof or zero-knowledge protocol is a method by which one party (the prover) can prove to another party (the verifier) that they know a value x, without conveying any information apart from the fact that they know the value x.
零知识证明:在不暴露秘密x的情况下,证明自己知道x
-- wikipedia

举个更通俗的例子:

我认识某个大明星A,我必须向我的朋友C证明我认识A。但我不能泄漏A的隐私。
一个简单的做法就是打视讯给A,然後让A与C通话。这样一来C不会知道如何打给A,却能够相信我认识A。

或者一个经典的例子:

在一个环形通道的一次有一扇上锁的门。我必须证明我有那门的钥匙,我只需要从一边进入,并且从另一边出来就可以。

(只要能够从A进入,B出来就说明我有门钥匙)


参考资料


<<:  【从实作学习ASP.NET Core】Day08 | 後台 | 新增商品类别

>>:  TypeScript 能手养成之旅 Day 3 判断资料型别

[自学笔记] URL Encoding

URL Encoding(URL编码) URL 编码将字符转换为可以通过 Internet 传输的格...

Day 24 : Tkinter-利用Python建立GUI(元件篇)

今天会开始来讲元件的部分~ 通用参数 height : 高度 width : 宽度 fg : 文字颜...

Day 09 CSS <背景属性>

CSS背景属性 可以给页面元素添加背景样式 背景属性可设置背景颜色、背景图片、背景平舖、背景图片位置...

NetSuite Glossary

今天继续介绍 NetSuite 几个基本的 Glossary, 这些 Glossary 经常会出现在...

Day02:咦?啊产品已经上线了,真的要翻新吗

软件开发有个情境或许大家都不陌生: 团队可能接手外包所开发的程序,或是接手团队其他成员所写的程序继续...