日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET WebApi 基于JWT实现Token签名认证

發布時間:2023/12/9 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET WebApi 基于JWT实现Token签名认证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

開發提供數據的WebApi服務,最重要的是數據的安全性。那么對于我們來說,如何確保數據的安全將會是需要思考的問題。在ASP.NET WebService服務中可以通過SoapHead驗證機制來實現,那么在ASP.NET WebApi中我們應該如何保證我們的接口安全呢?這次給大家分享一種基于JWT方式解決方案。

1.1、本次分享包含知識點如下:

1)、對ASP.NET WebApi 如何實現身份認證進一步了解和學習。

2)、掌握.NET中的JWT組件的基本運用。

3)、.NET開源輕量級HTTP網絡請求框架RestSharp在ASP.NET WebApi中的基本運用。

4)、ASP.NET WebAPI自定義HTTP參數綁定支持多參數POST請求。(強烈推薦)

5)、ASP.NET WebApi 基于JWT實現Token簽名認證。

1.2、一句話總結:今天我們要解決的問題?

ASP.NET WebAPI如何保證客戶端以安全的方式進行訪問。

廢話不多說,直接上干貨,我們不生產干貨,我們只是干貨的搬運

二、概念名稱含義介紹

2.1、什么是JWT?

JSON Web Token (JWT)是一個開放標準(RFC 7519),它定義了一種緊湊的、自包含的方式,用于作為JSON對象在各方之間安全地傳輸信息。該信息可以被驗證和信任,因為它是數字簽名的。

2.2、JWT長什么樣?

JWT是由三段信息構成的,將這三段信息文本用.鏈接一起就構成了Jwt字符串。

?

JWT結構體

2.3、JWT的構成

第一部分我們稱它為頭部(header),第二部分我們稱其為載荷(payload,),第三部分是簽證(signature).

Header

header典型的由兩部分組成:token的類型(“JWT”)和算法名稱(比如:HMAC SHA256或者RSA等等)。

例如:

?  }

  JWT結構Header

?

然后,用Base64對這個JSON編碼就得到JWT的第一部分

Payload

JWT的第二部分是payload,它包含聲明(要求)。聲明是關于實體(通常是用戶)和其他數據的聲明。

聲明有三種類型: registered, public 和 private。

Registered claims : 這里有一組預定義的聲明,它們不是強制的,但是推薦。比如:iss (issuer), exp (expiration time), sub (subject), aud (audience)等。

Public claims : 可以隨意定義。

Private claims : 用于在同意使用它們的各方之間共享信息,并且不是注冊的或公開的聲明。

下面是一個例子:

  }

對payload進行Base64編碼就得到JWT的第二部分

注意,不要在JWT的payload或header中放置敏感信息,除非它們是加密的。

Signature

為了得到簽名部分,你必須有編碼過的header、編碼過的payload、一個秘鑰,簽名算法是header中指定的那個,然對它們簽名即可。例如:HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)簽名是用于驗證消息在傳遞過程中有沒有被更改,并且,對于使用私鑰簽名的token,它還可以驗證JWT的發送方是否為它所稱的發送方。?

三、WebApi基于JWT實現Token簽名認證原理講解

3.1、ASP.NET WebAPI如何保證客戶端以安全的方式進行訪問

ASP.NET WebAPI?如何保證接口的安全?先說一下何為安全?我們需要解決什么問題?

調用安全:由于WebService是暴露在公網中,怎么防止非法用戶調用我們的服務呢?因此我們需要解決:認證問題。

數據傳輸安全:由于我們的數據都是通過明文在網絡上進行傳輸很容易被竊取到。因此我們需要解決:數據被竊取問題。

以上解釋僅僅是阿笨狹義的理解;網絡安全還包括很多方面,會話劫持、會話被篡改等等。

總結:我們可以通過Token驗證機制來保證WebAPI?的認證使用;可以通過HTTPS來保證數據的加密,防止網絡偵聽!

?

基于JWT實現Token簽名認證原理圖

?

3.2、基于JWT實現Token簽名認證基本思路如下:

基本流程上是這樣的:

●用戶使用用戶名密碼來請求服務器。

●服務器進行驗證用戶的信息。

●服務器通過驗證發送給用戶一個token。

●客戶端存儲token,并在每次請求時附送上這個token值。

●服務端驗證token值,并返回數據。

四、實戰源碼在線實例演示

?

登錄

?

?

基于JWT實現Token簽名認證

?

?

五、總結

本次分享課程《ASP.NET WebApi 基于JWT實現Token簽名認證》阿笨給大家分享了在寫開放的WebAPI接口時是如何保證數據的安全性的?在此總結一下需要注意的幾點事項:

一、JTW注意事項:?

1)、不應該在jwt的payload部分存放敏感信息,因為該部分是客戶端可解密的部分。

2)、保護好secret私鑰,該私鑰非常重要。

3)、如果可以,請使用https協議。

注意:secret是保存在服務器端的,jwt的簽發生成也是在服務器端的,secret就是用來進行jwt的簽發和jwt的驗證,所以,它就是你服務端的私鑰,在任何場景都不應該流露出去。一旦客戶端得知這個secret, 那就意味著客戶端是可以自我簽發jwt了。

二、JWT具備的優勢特點如下:

1)、安全性比較高,加上密匙加密而且支持多種算法。

2)、攜帶的信息是自定義的,而且可以做到驗證token是否過期。

3)、驗證信息可以由前端保存,后端不需要為保存token消耗內存。

俗話說的好:師父領進門修行在個人,希望大家在學習的道路上一直堅持下去!

轉載于:https://www.cnblogs.com/zwalter/p/9625866.html

總結

以上是生活随笔為你收集整理的ASP.NET WebApi 基于JWT实现Token签名认证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。