.NET Core WebAPI集成JWT,實現身份驗證

前兩篇文章給你們介紹了在.NET Core中如何使用Swagger的文章,那今天給你們分享一下JWTweb

在作接口開發的同窗可能都有感覺,個人接口如何保護的問題,若是沒有身份驗證,那不是接口徹底暴露在外面,任意令人調用,這顯然不是咱們想要的一種結果。固然作身份驗證的方式有多種,今天給你們講一種比較流行了,標準的身份驗證JWTredis

什麼是JWT?算法

隨着技術的發展,分佈式web應用的普及,經過session管理用戶登陸狀態成本愈來愈高,所以慢慢發展成爲token的方式作登陸身份校驗,而後經過token去取redis中的緩存的用戶信息,隨着以後jwt的出現,校驗方式更加簡單便捷化,無需經過redis緩存,而是直接根據token取出保存的用戶信息,以及對token可用性校驗,單點登陸更爲簡單。緩存

JWT的結構體是什麼樣的?session

JWT由三部分組成,分別是頭信息、有效載荷、簽名,中間以(.)分隔分佈式

(1)header(頭信息)post

由兩部分組成,令牌類型(即:JWT)、散列算法(HMAC、RSASSA、RSASSA-PSS等)測試

(2)Payload(有效載荷)編碼

JWT的第二部分是payload,其中包含claims。claims是關於實體(經常使用的是用戶信息)和其餘數據的聲明,claims有三種類型: registered, public, and private claims。spa

Registered claims: 這些是一組預約義的claims,非強制性的,可是推薦使用, iss(發行人), exp(到期時間), sub(主題), aud(觀衆)等;

Public claims: 自定義claims,注意不要和JWT註冊表中屬性衝突

Private claims: 這些是自定義的claims,用於在贊成使用這些claims的各方之間共享信息,它們既不是Registered claims,也不是Public claims。

(3)Signature

要建立簽名部分,必須採用編碼的Header,編碼的Payload,祕鑰,Header中指定的算法,並對其進行簽名。

JWT使用流程:

JWT在.NET Core項目中的具體用法:

(1)在ConfigureServices方法中添加JWT相關代碼:

(2)在Configure方法中添加JWT代碼:

(3)建立一個JWT服務類:

(4)在接口類或方法上標記身份驗證:

到此爲止,JWT的基本用法就結束,很是簡單和方便,接下來咱們用postman測試一下JWT是否生效:

(1)當咱們在不登陸的狀況下,訪問接口看看是什麼現象:

咱們發現接口返回提示:401 Unauthorized

(2)咱們先調用登陸接口,先計算獲得token,而後再來請求試試:

登陸成功後,接口返回了token值

(3)將token複製粘貼到下方,請求業務接口,成功調用:

相關文章
相關標籤/搜索