前言
很多前後分離專案的認證一路都是 JWT:後台管理員登入後拿到 Token,之後每個請求都帶 Authorization: Bearer ...。
用久了容易有個錯覺,好像 ASP.NET Core 的認證就只有 JWT 這條路。
其實不是。ASP.NET Core 的認證系統是可插拔的 Scheme 架構,JWT 只是其中一種掛上去的 Scheme。
這次剛好有個需求可以拿來示範:ERP 廠商要打我們的 API,但他們不是「會登入的使用者」,給不了帳密,也不適合走 JWT 換 Token 那一套。
這種機器對機器、長期有效的靜態金鑰,用 API Key 才對。
這篇想做兩件事:
- 說明框架不是只能 JWT,同一個專案裡同時跑好幾種認證方式很正常。
- 把我自己寫的這版實作記下來。網路上 API Key 的文章不少,但很多不是繞太遠,就是沒講清楚怎麼跟既有 JWT 並存而不打架,這版盡量寫得好懂一點。