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