五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網 會員登陸 & 注冊

C#分布式登錄——jwt

2020-09-24 10:51 作者:朝夕教育  | 我要投稿


一、傳統(tǒng)的session登錄

在服務器存儲一份用戶登錄的信息,這份登錄信息會在響應時傳遞給瀏覽器,告訴其保存為cookie,以便下次請求時發(fā)送給我們的應用,這樣我們的應用就能識別請求來自哪個用戶了,這就是傳統(tǒng)的基于session認證。?

在asp.net core中可以簡單實現(xiàn):

但是這種基于session的認證使應用本身很難得到擴展,隨著不同客戶端用戶的增加,獨立的服務器已無法承載更多的用戶,而這時候基于session認證應用的問題就會暴露出來。

傳統(tǒng)session的主要問題如下:

1.服務器壓力: 每個用戶經過我們的應用認證之后,我們的應用都要在服務端做一次記錄,以方便用戶下次請求的鑒別,通常而言session都是保存在內存中,而隨著認證用戶的增多,服務端的開銷會明顯增大。

2.擴展性: 用戶認證之后,服務端做認證記錄,如果認證的記錄被保存在內存中的話,這意味著用戶下次請求還必須要請求在這臺服務器上,這樣才能拿到授權的資源,這樣在分布式的應用上,相應的限制了負載均衡器的能力。這也意味著限制了應用的擴展能力。

3.CSRF: 因為是基于cookie來進行用戶識別的, cookie如果被截獲,用戶就會很容易受到跨站請求偽造的攻擊。


二、基于token的鑒權機制

基于token的鑒權機制是無狀態(tài)的,它不需要在服務端去保留用戶的認證信息或者會話信息,而是基于token去運算而實現(xiàn)鑒權。這就意味著基于token認證機制的應用不需要去考慮用戶在哪一臺服務器登錄了,這就為服務實現(xiàn)大規(guī)模分布式提供了基礎。

上圖是一種用token登錄的實現(xiàn)方式,類似的還有很多,雖然實現(xiàn)了分布式的登錄處理,但是由于不同的系統(tǒng)之間的不同實現(xiàn),導致開發(fā)量劇增。


三、Json web token

這里推薦使用JWT——Json web token(官網鏈接)。一個典型的JWT看起來如下圖:

jwt為一個字符串,字符之間通過"."分隔符分為三個子串。注意JWT對象為一個長字串,各字串之間也沒有換行符,此處為了演示需要,特意分行并用不同顏色表示了。每一個子串表示了一個功能塊,總共有以下三個部分:JWT頭、有效載荷和簽名,將它們寫成一行如下:


?1 Authorization: Bearer?

這里可以打開nuget:https://www.nuget.org/packages/JWT.Standard/,或者在vs中使用

輸入jwt.standard找到nuget包下載

1.生成jwt數據

在需要使用的地方輸入如下C#代碼:

這樣就將需要的jwt內容信息加入到Http頭部中,當然可以使用如下方式,以參數數據的方式傳遞,從而避免跨域問題

2.jwt解析驗證

JWTPackage<T>中使用JWTPackage<T>.Parse方法解析jwt的內容,如果內容是header中的參數,則快捷解析驗證代碼如下:


四、JWT的問題

經過上述的簡單介紹,JWT不僅可用于認證,還可用于信息交換,善用JWT有助于減少服務器請求數據的次數。但是如果不正確的使用JWT也會造成安全問題,主要幾點如下:

1.保護好secret私鑰,加密的密碼不能泄漏,否則就失去了簽名的意義了

2.Replay Attacks,JWT的消息體中最好加入生成時間,在后端中進行時間判定,小于規(guī)定時間的直接攔截

3.不應該在JWT的payload部分存放敏感信息,因為該部分是客戶端可解密的部分

4.建議的方式是通過SSL加密的傳輸(https協(xié)議),從而避免敏感信息被嗅探

?

本文轉載自博客園:https://www.cnblogs.com/yswenli/p/13510050.htm


C#分布式登錄——jwt的評論 (共 條)

分享到微博請遵守國家法律
宕昌县| 峡江县| 凯里市| 岫岩| 海阳市| 区。| 岳普湖县| 大荔县| 漳州市| 视频| 兴海县| 竹北市| 锡林浩特市| 通河县| 米易县| 葵青区| 临沧市| 哈密市| 洞头县| 察哈| 鄄城县| 周口市| 蒲江县| 漾濞| 伽师县| 辽宁省| 开原市| 定远县| 怀柔区| 沁水县| 阜城县| 无锡市| 南溪县| 比如县| 博罗县| 合江县| 綦江县| 东阿县| 靖安县| 罗定市| 通城县|