日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

REST 是一種現(xiàn)代架構(gòu)風(fēng)格,它定義了一種設(shè)計 Web 服務(wù)的新方法。和之前的 HTTP 以及 SOA 不同,它不是一個協(xié)議(即:一套嚴(yán)格的規(guī)則),而是一些關(guān)于 Web 服務(wù)應(yīng)該如何相互通信的一些建議和最佳實踐。按照 REST 最佳實踐開發(fā)的服務(wù)被稱為 “RESTful Web 服務(wù)”。

安全性是 RESTful 服務(wù)的基石。啟用它的方法之一是盡可能內(nèi)置用戶身份驗證和授權(quán)機制。

在 RESTful 服務(wù)中實現(xiàn)用戶身份驗證和授權(quán)的方法有很多。我們今天要講的主要方法(或標(biāo)準(zhǔn))有:

  • Basic 認證
  • OAuth 2.0
  • OAuth 2.0 + JWT

為了讓我們的討論更加具體,假設(shè)我們的后端程序有微服務(wù),并且每個用戶請求時,必須調(diào)用后端的幾個服務(wù)來返回請求的數(shù)據(jù)。所以,我們將不僅從安全性問題方面,而且在它們產(chǎn)生的額外流量和服務(wù)器負載的背景下檢查每個標(biāo)準(zhǔn)。下面開始吧…

Basic 認證

最古老也是最簡單的標(biāo)準(zhǔn)。

看起來像: 用戶名 + 密碼 + Base64(對用戶名和密碼做哈希的基礎(chǔ)算法)。

工作原理:加入有人嘗試登錄用戶的 Fackbook 賬戶,去訪問他的消息、歷史記錄、群組信息,這些都是獨立的服務(wù)。當(dāng)用戶輸入用戶名和密碼后,系統(tǒng)會允許登錄。但是,默認情況下,系統(tǒng)不知道用戶的角色和權(quán)限是什么,他們可以訪問哪些服務(wù)等等。

所以每次用戶嘗試訪問任何一個服務(wù)的時候,系統(tǒng)都應(yīng)該再次驗證是否允許執(zhí)行這個操作,這意味著需要對身份驗證進行額外的調(diào)用。就我們的示例中有四個服務(wù)而言,在這種情況下,每個用戶將有四個額外的調(diào)用。

現(xiàn)在假設(shè)每秒有 3k 個請求,在 Facebook 的系統(tǒng)中每秒 300k 請求更現(xiàn)實。將這請求乘以四,結(jié)果是每秒要向服務(wù)器發(fā)出 12k 次調(diào)用。

REST API一些必備的安全基礎(chǔ)--了解一下

 

總結(jié):可伸縮性差,大量的額外流量(額外調(diào)用)沒有帶來業(yè)務(wù)價值,服務(wù)器的負載很大。

OAuth 2.0

看起來像:用戶名 + 密碼 + 訪問令牌 + 過期令牌

工作原理:OAuth 2.0 標(biāo)準(zhǔn)的核心思想是,用戶使用用戶名和密碼登錄系統(tǒng)后,客戶端(用戶訪問系統(tǒng)的設(shè)備)會收到一對令牌,這是一個訪問權(quán)限令牌和刷新令牌。

訪問令牌用于訪問系統(tǒng)中的所有服務(wù)。到期后,系統(tǒng)使用刷新令牌生成一對新的令牌。所以,如果用戶每天都進入系統(tǒng),令牌也會每天更新,不需要每次都用用戶名和密碼登錄系統(tǒng)。刷新令牌也有它的過期時間(雖然它比訪問令牌長得多),如果一個用戶一年沒有進入系統(tǒng),那么很可能會被要求再次輸入用戶名和密碼。

OAuth 2.0 標(biāo)準(zhǔn)取代了基本的身份驗證方法,它具有一定的優(yōu)勢,例如用戶每次想要進入系統(tǒng)時不用輸入用戶名和密碼。但是,系統(tǒng)仍然需要調(diào)用身份驗證服務(wù)器,就像使用基本身份驗證方法時一樣,以檢查擁有該令牌的用戶有權(quán)限做什么。

假設(shè)有效期是一天。這意味著登錄服務(wù)器上的負載要少得多,因為用戶每天只需要輸入一次憑證,而不是每次都要進入系統(tǒng)。但是,系統(tǒng)仍需要驗證每個令牌并檢查用戶角色的存儲狀態(tài)。所以我們最終還要調(diào)用身份驗證服務(wù)器。

REST API一些必備的安全基礎(chǔ)--了解一下

 

總結(jié):和 Basic 驗證有相同的問題 - 可伸縮性差,身份驗證服務(wù)器負載較高。

OAuth2 + JSON Web 令牌

看起來像:用戶名 + 密碼 + JSON數(shù)據(jù) + Base64 + 私鑰 + 到期日期

工作原理:當(dāng)用戶第一次使用用戶名和密碼登錄系統(tǒng)時,系統(tǒng)不僅會返回一個訪問令牌(只是一個字符串),而是一個包含所有用戶信息的 JSON 對象,比如角色和權(quán)限,使用 Base64 進行編碼并使用私鑰簽名。下圖是它在沒有編碼的情況下的樣子:

REST API一些必備的安全基礎(chǔ)--了解一下

 

看起來很可怕,但這確實有效!主要區(qū)別在于我們可以在令牌中存儲狀態(tài),而服務(wù)保持無狀態(tài)。這意味著用戶自己擁有自己的信息,不需要額外的調(diào)用來檢查它,因為所有的內(nèi)容都在令牌里。這對于減少服務(wù)器負載方面是一個很大的優(yōu)勢。這個標(biāo)準(zhǔn)在世界范圍內(nèi)得到廣泛應(yīng)用。

總結(jié):良好的可伸縮性,可以和微服務(wù)一起工作。

新玩意:亞馬遜簽名方式

一種全新的,奇特的方法,稱為 HTTP 簽名,亞馬遜是目前使用它的大廠之一。

它的思路是,當(dāng)你創(chuàng)建亞馬遜帳戶的時候,會生成一個永久的、非常安全的訪問令牌,你要非常小心地存儲起來并且不要給任何人顯示。當(dāng)你要從 Amazon 請求某些資源時,你可以獲取到所有相關(guān)的 http 頭信息,使用這個私鑰對其進行簽名,然后將簽名的字符串作為 header 發(fā)送。

在服務(wù)器端,亞馬遜也有你的訪問密鑰。它們接下來做什么?只需要使用你的 http 頭信息和這個密鑰進行簽名。然后將簽名字符串和你作為簽名的字符串進行比較;如果相同那么就知道你是誰。

最大的好處是你只需要發(fā)送一次用戶名和密碼 - 就可以獲得令牌。至于使用私鑰簽名的 header 信息,基本上沒有機會對它們進行編碼。就算有人截獲了信息——誰在乎呢 ;)

分享到:
標(biāo)簽:REST API
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定