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