剛開始接觸後端開發的時候,常常聽到要對使用者的登入過程和操作進行驗證和授權。雖然我知道這兩個概念對系統安全很重要,但因為它們經常一起提到,讓我搞不清楚它們各自的用途和目的。今天就來聊聊驗證和授權的概念,希望能幫助大家更容易理解這兩者之間的區別~
驗證的過程其實就是在確認使用者身份
的過程,可以想像以下場景:
今天小明費盡千辛萬苦,終於搶到了周杰倫的演唱會門票,到了演唱會當天,小明開開心心地走到大巨蛋門口,此時門口的保全就問他:「嘿,你是誰?有門票嗎?」於是小明就拿出他的票,這樣保全才會知道小明是有門票的人,有資格進來聽現場演唱會。
以上的情景如果發生在網路上,就是使用者在系統的登入畫面,輸入帳號密碼,向系統表示說:『我就是這個使用者!』。驗證完成後系統就知道你的身份,就可以進入系統開始操作了。而驗證其實也有其他方式,像是常見的第三方登入,或是雙重驗證(Two-Factor Authentication,簡稱2FA)等。
授權則是驗證後的下一個步驟,用來確認使用者是否有足夠的權限
去進行某些操作,例如修改或是編輯某些資料,可以想像以下場景:
小明在進入演唱會現場後,看到有些粉絲跑去後台跟周杰倫合照,於是他也興匆匆的跑過去,想要湊一咖。這個時候,小明又又又被保全攔下來了,這次保全問他的是:「嘿,你是誰?有買VIP門票嗎?」這時候小明才知道,原來要課重本買 VIP 門票才有資格去後台合照,於是他只好內牛滿面的回去位子上坐好。
就像是有 VIP 門票才能合照一樣,系統也會根據使用者的權限,來對於使用者的操作進行一些限制。例如,IT鐵人賽的參賽者只能對自己的貼文進行編輯,而只有具有管理者權限的人才有權編輯所有人的文章,以確保每個使用者都只能做出符合自己角色的操作。
簡單來說,驗證的目的就是在於確認使用者是誰,而授權則是在確認使用者是否有權限進行某些操作,希望這篇文章能夠讓跟我一樣分不太清楚驗證以及授權的人有更清楚一點的理解~
Authentication vs. Authorization