iT邦幫忙

2021 iThome 鐵人賽

DAY 10
1
Software Development

用Keycloak學習身份驗證與授權系列 第 10

Day09 - 【概念篇】再談身份驗證與授權

本系列文之後也會置於個人網站


現在,讓我們再一次把視線放到「身份驗證」和「存取控制」這些名詞身上。
在入門篇的「淺談身份驗證與授權」已經相當程度的解釋過各個名詞。
不過今天將要更關注在身份驗證與存取控制的細節上。

對於一個應用來說,最重要的是它的 業務邏輯
除了業務邏輯本身,為完成所需的工作,會需要取得必要之資源。這可能是一份檔案,
鏡頭、麥克風資源等不同種形式。

取得資源 過程中,也會有另外一層業務邏輯,也可能本身就是另一隻程式服務,對所需取得的資源,進行 存取控制

最後,爲了判斷是否具有存取該項資源的權限,有可能有必要進行 身份驗證或授權

現在,我們將業務邏輯作爲應用服務、存取控制作爲存取控制服務、身份驗證作爲身份驗證/授權服務來看時序圖。

在上面例子,「身份驗證/授權服務」可能是身份伺服器和授權伺服器;「存取控制服務」可能是資源伺服器。
但也有不少做法是將身份和授權做在一起,資源存取控制直接由應用(業務邏輯)處理。更甚者,身份驗證於應用的不同邏輯層的狀況也不少見。


細看身份驗證與存取控制

接著,來更仔細的看看身份驗證與存取控制內部。這兩者都可以想象其內部有一個執行器(executor)。
這個執行器可以根據讀取的規則清單(rules list)來判斷是否通過身份驗證或允許存取資源。

這個執行器可能是執行帳號密碼檢驗,規則清單就是每個人的帳號密碼。
透過讀取規則清單找到身份識別的帳號,比對與規則清單內的密碼,以驗證身份。

身份驗證並不會只有帳號密碼這麼一種,所以可能會有多個執行器,每個執行器都有他的規則清單。
除了帳號密碼外,身份私鑰驗證、一次性密碼驗證都有可能。

除了可替換的驗證方式外,可以改成多增加一個政策輸入(Policy)。透過不同的政策,讀取不同規則清單,然後執行不同策略。

※ Note: 這裡的Policy可能與其他像似系統有很大的不同。有可能稱之爲執行模型(model)或策略(strategy)。不過姑且先稱之爲policy。儘管有時Policy直接代表者多個規則(rules),更像是規則清單(rules list)。但你可以想象成該清單上還有一段訊息(meta data),記載者如何理解這些規則。

然後存取控制和身份驗證很像。有非常多種存取控制的政策可以選擇。更甚者你可以將執行器單獨來看,並將執行器嵌入到業務應用之中。還記得稍微點到過的casbin嗎?在我看來他是一個非常巧妙的執行器。或許我們可以在翻外來多聊一點。


上一篇
Day08 - 【入門篇】OAuth 2.0 Playground
下一篇
Day10 - 【概念篇】深入OAuth 2.0
系列文
用Keycloak學習身份驗證與授權36

尚未有邦友留言

立即登入留言