使用者認證關鍵問題

  1. Http stateless 特性下,客戶端與伺服器不知道彼此狀態
  2. 客戶端和伺服器透過什麼憑證來辨識彼此
  3. 這些憑證被儲存在哪裡

Http stateless

Http 的無狀態性,是指每一個 request 是獨立的。意思是伺服器端與客戶端不會保持連線狀態,因此不會有雙方狀態的即時更新。

因此,在 Web 應用程式想要保留使用者登入狀態時,就需要另外實作解決方案。而 cookie & session 就是在此脈絡下產生的解決方案。

交換憑證 Cookie & Session

原本採用 Passport 的 local strategy,這個策略在搭配 cookie & session 的機制來實現登入。

Cookie 是瀏覽器的儲存機制

cookie 是瀏覽器提供的功能,如果使用後端 api 伺服器時,我們的客戶端不在是瀏覽器,所以不能使用 cookie-based 認證機制。

Token-based 登入機制

Token 由如代幣。像是入場憑證,直接叫 token。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4e5f03ff-751c-4d04-a62a-e7d8893260c6/ExportedContentImage_05.png

首次取得 token 後,之後發送的每一個 http 請求都會帶著 token 參數。

JSON Web Token ( JWT )

機制規範: