最近在給客戶開發 Azure DevOps Exension, 該擴展中某個功能需要調用使用 .NET Core 3 寫的 Web Api。 在拜讀了 "Authenticating requests to your service" 之後,我給 Web Api 增加了 JWT 認證。 PS: 我沒 ...
最近在給客戶開發 Azure DevOps Exension, 該擴展中某個功能需要調用使用 .NET Core 3 寫的 Web Api。
在拜讀了 Authenticating requests to your service 之後,我給 Web Api 增加了 JWT 認證。
PS: 我沒有照抄代碼,問題出現了.....問題出現了.....問題出現了.....
Postman 請求該 Web Api, 一直報 401 Unauthorized, 無論我換何種姿勢請求, 都是 401 Unauthorized.
心中哪個老火啊, 上 jwt.io 校驗了一下,是合法通過的,就是不知道為毛 Postman 不通過.
百思不得其解,度娘了一下, 有個標題引起了我的註意——.net core 3 web api jwt 一直 401
進去看了一眼,恍然大悟!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
答案竟然是:
在 app.UseAuthorization();
之前加上 app.UseAuthentication();
就可以了。
心中十萬個草泥馬在奔騰,因為這兩個方法簽名的單詞太接近了,而且我英語很爛所以對相似的單詞都是一眼略過,以為是一樣的就沒有照搬添加 app.UseAuthentication();
。
結果烏龍就發生了...
以下內容轉載自:https://www.iteye.com/blog/lucky16-2020198
認證 (authentication) 和授權 (authorization) 的區別
以前一直分不清 authentication 和 authorization,其實很簡單,舉個例子來說:
你要登機,你需要出示你的身份證和機票,身份證是為了證明你張三確實是你張三,這就是 authentication;
而機票是為了證明你張三確實買了票可以上飛機,這就是 authorization。
在 computer science 領域再舉個例子:
你要登陸論壇,輸入用戶名張三,密碼1234,密碼正確,證明你張三確實是張三,這就是 authentication;
再一check用戶張三是個版主,所以有許可權加精刪別人帖,這就是 authorization。