灘之南:
http://www.hyhblog.cn/2018/04/25/user_login_auth_terms/認證是指根據聲明者所特有的識別信息,確認聲明者的身份。認證在英文中對應于identification這個單詞。
最常見的認證實現方式是通過用戶名和密碼,但認證方式不限于此。下面都是當前常見到的認證技術,
身份證用戶名和密碼用戶手機:手機短信、手機二維碼掃描、手勢密碼用戶的電子郵箱基于時間序列和用戶相關的一次性口令用戶的生物學特征:指紋、語音、眼睛虹膜用戶的大數據識別等等為了確認用戶的身份,防止偽造,在安全要求高的場合,經常會使用組合認證(或者叫多因素認證),也就是同時使用多個認證方式對用戶的身份進行校驗。
簡單來說,授權一般是指獲取用戶的委派權限。在英文中對應于authorization這個單詞。
在信息安全領域,授權是指資源所有者委派執行者,賦予執行者指定范圍的資源操作權限,以便執行者代理執行對資源的相關操作。這里面包含有如下四個重要概念,
資源所有者,擁有資源的所有權利,一般就是資源的擁有者。資源執行者,被委派去執行資源的相關操作。操作權限,可以對資源進行的某種操作。資源,有價值的信息或數據等,受到安全保護。需要說明的是,資源所有者和執行者可以是自然人,就是普通用戶,但不限于自然人。在信息安全領域,資源所有者和執行者,很多時候是應用程序或者機器。比如用戶在瀏覽器上登錄一個網站,那么這個瀏覽器就成為一個執行者,它在用戶登錄后獲取了用戶的授權,代表著用戶執行各種指令,進行購物、下單、付錢、轉賬等等操作。
同時,資源所有者和執行者可以是分開的不同實體,也可以是同一個。若是分開的兩者,則資源執行者是以資源所有者的代理形式而存在。
授權的實現方式非常多也很廣泛,我們常見的銀行卡、門禁卡、鑰匙、公證書,這些都是現實生活中授權的實現方式。其實現方式主要通過一個共信的媒介完成,這個媒介不可被篡改,不可隨意偽造,很多時候需要受保護,防止被竊取。
在互聯網應用開發領域,授權所用到的授信媒介主要包括如下幾種,
通過web服務器的session機制,一個訪問會話保持著用戶的授權信息通過web瀏覽器的cookie機制,一個網站的cookie保持著用戶的授權信息頒發授權令牌(token),一個合法有效的令牌中保持著用戶的授權信息前面兩者常見于web開發,需要有瀏覽器的支持。
鑒權是指對于一個聲明者所聲明的身份權利,對其所聲明的真實性進行鑒別確認的過程。在英文中對應于authentication這個單詞。
鑒權主要是對聲明者所聲明的真實性進行校驗。若從授權出發,則會更加容易理解鑒權。授權和鑒權是兩個上下游相匹配的關系,先授權,后鑒權。授權和鑒權兩個詞中的“權”,是同一個概念,就是所委派的權利,在實現上即為授信媒介的表達形式。
因此,鑒權的實現方式是和授權方式有一一對應關系。對授權所頒發授信媒介進行解析,確認其真實性。下面是鑒權的一些實現方式,
門禁卡:通過門禁卡識別器鑰匙:通過相匹配的鎖銀行卡:通過銀行卡識別器互聯網web開發領域的session/cookie/token:校驗session/cookie/token的合法性和有效性鑒權是一個承上啟下的一個環節,上游它接受授權的輸出,校驗其真實性后,然后獲取權限(permission),這個將會為下一步的權限控制做好準備。
權限控制是指對可執行的各種操作組合配置為權限列表,然后根據執行者的權限,若其操作在權限范圍內,則允許執行,否則禁止。權限控制在英文中對應于access/permission control。
對于權限控制,可以分為兩部分進行理解:一個是權限,另一個是控制。權限是抽象的邏輯概念,而控制是具體的實現方式。
先看權限(Permission),這是一個抽象的概念,一般預先定義和配置好,以便控制的具體實現。權限的定義,若簡單點,可以直接對應于一個可執行的操作集合。而一般情況下,會有基于角色的方式來定義權限,由角色來封裝可執行的操作集合。
若以門禁卡的權限實現為例,上述兩種定義方式則可以各自表達為,
這是一個門禁卡,擁有開公司所有的門的權限這是一個門禁卡,擁有管理員角色的權限,因而可以開公司所有的門可以看到,權限作為一個抽象的概念,將執行者和可具體執行的操作相分離。
在上文的討論中,鑒權的輸出是權限(Permission)。一旦有了權限,便知道了可執行的操作,接下來就是控制的事情了。
對于控制,是根據執行者的權限,對其所執行的操作進行判斷,決定允許或禁止當前操作的執行。現實生活中控制的實現方式,多種多樣,
門禁:控制門的開關自行車鎖:控制車輪互聯網web后端服務:控制接口訪問,允許或拒絕訪問請求認證、授權、鑒權和權限控制這四個環節是一個前后依次發生、上下游的關系,
認證-->授權-->鑒權-->權限控制
需要說明的是,這四個環節在有些時候會同時發生。 例如在下面的幾個場景,
使用門禁卡開門:認證、授權、鑒權、權限控制四個環節一氣呵成,在瞬間同時發生用戶的網站登錄:用戶在使用用戶名和密碼進行登錄時,認證和授權兩個環節一同完成,而鑒權和權限控制則發生在后續的請求訪問中,比如在選購物品或支付時。無論怎樣,若從時間順序方面來看,這四個環節是按時間前后、依次相繼發生的關系。
這兩個概念在很多時候是被混淆最多的概念。被混淆的主要原因,如上文所述,很多時候認證、授權、鑒權和權限控制一同發生,以至于被誤解為,認證就是鑒權,鑒權就是認證。
其實兩者是不一樣的概念,兩者都有對身份的確認過程,但是兩者的主要區別在于,
認證是確認聲明者的本身身份,其作為授權的上游銜接而存在鑒權是對聲明者所聲明的真實性進行確認的過程,其作為授權的下游銜接而存在重新梳理: