昨天提到 identity management 主要在處理的問題,超級簡化的講法就是
如何只讓「特定的使用者」取得「特定的資源」
那麼延伸出來的兩個問題就會是
也分別就是 authentication(驗證) 和 authorization(授權)兩件事情。
延續昨天飯店的例子,當旅客來到飯店的櫃檯之後,櫃檯人員當然不會隨便就拿出房間鑰匙給他。要做第一件事情,就是「驗證」這位旅客的身份,而驗證的方向主要有三種,分別是看
如果飯店想要使用第一種方法的話,那就要透過人像辨識或指紋辨識等方式來驗證,來確認出現在櫃檯的這個人就是先前預約的旅客。這個方法看起來非常保險,但是要事先收集到人像或指紋等資訊,要花費的力氣可能不少。
第二種方法,可能會是檢查旅客的護照、ID、駕照等,也就是檢查旅客所擁有的物件。這個方法很常見,不過如果該物件被別人偷走,那麼別人就能夠住進這間飯店。
第三種方法則是詢問旅客特定的資訊,譬如訂單上面的特殊編號,或者是某個神秘團體的通關密語等,也就是旅客在某個特定時空下所知道的東西。跟第二個方法一樣,只要別人也知道了這個特定的資訊,同樣就能住進這間飯店。不過相對於第二個方法,我們可以刻意在一段時間內更新資訊,即便別人這個時間點偷走了關鍵資訊,也不一定能夠在下一個時間點使用。
三種方法看起來沒有一種是完美的,不過只要同時使用多種方式進行驗證,譬如
就可以降低特定物件或資訊被別人竊取的機會。
驗證完身份之後,飯店櫃檯人員就可以拿出特定的鑰匙給旅客。然而櫃檯人員怎麼知道要拿什麼鑰匙呢?櫃檯人員可能會去查看訂單,看看這位旅客事前預訂了哪一種房型。
而要如何避免旅客去了飯店人員不想讓他去的地方呢?除了每間房間的鎖都不一樣之外,工作人員進出的辦公室、餐廳後場也都裝上了不一樣的鎖,防止旅客用一把鑰匙走天下。
但這樣一來,能夠暢行無阻的飯店經理可能就很頭痛,因為他要必須帶著許多鑰匙在身上。
另一方面,在旅客能夠進入的餐廳當中,有一些用品是僅限餐廳人員使用,不希望旅客自己使用,這時候單用鑰匙這個方法,似乎就沒有辦法管理這件事情。我們需要更細緻的管理辦法。
以上簡單談到 authentication & authorization 的目的,以及可能會面臨到的問題。明天讓我們繼續探索 identity management 的更多內容吧!