jwt在nginx lua中的使用

2021-10-07 10:45:21 字數 1835 閱讀 6393

nginx是乙個web伺服器,也可以用作反向**,負載平衡器,郵件**和http快取。nginx可用於建立乙個api閘道器,該api閘道器以事件驅動的方式處理請求,並以快速,資源占用少的方式處理對伺服器的查詢。此外,它還降低了複雜性並通過降低效能來最大化效能提供api呼叫的平均響應時間。

我們大多數人都已經熟悉kong,探索使用openresty構建api閘道器的可能性。

我們需要做的第一件事是安裝openresty。openresty使我們能夠使用lua編寫nginx指令碼。

安裝完成後,您應該導航到瀏覽器並輸入http://localhost。如果一切順利,您將看到以下螢幕截圖:

對於基本的api閘道器,應執行兩個重要操作:

路由認證方式

要將端點路由到其各自的伺服器:

local /api/ test

為了執行身份驗證,我將使用jwt。為此,我們需要使用opm(openresty package manager)安裝lua-resty-jwt庫。

opm get skylothar/lua-resty-jwt

建立乙個jwt-auth.lua檔案

上面的lua**執行以下操作:

如果是options呼叫或登入api,它將請求**到下一行執行。

否則,它將在authorization標頭中獲取jwt令牌。如果令牌不存在,則**返回'forbidden'。

然後驗證此jwt令牌的真實性和有效期。

令牌通過驗證後,會將請求**到相應的服務。否則,它返回'invalid_jwt'

將以上檔案包含在您的nginx.conf中

location /api/test

您已在nginx上新增了jwt身份驗證。

要檢查我們所做的更改,重新啟動openresty

使用postman或任何其他rest客戶端訪問api並驗證響應。

JWT在Django中的應用

json web token jwt 是為了在網路應用環境間傳遞宣告而執行的一種基於json的開放標準 rfc 7519 該token被設計為緊湊且安全的,特別適用於分布式站點的單點登入 sso 場景。jwt的宣告一般被用來在身份提供者和服務提供者間傳遞被認證的使用者身份資訊,以便於從資源伺服器獲取...

JWT在node中的簡單應用

json web token 縮寫 jwt 是目前最流行的跨域認證解決方案。是為了在網路應用環境間傳遞宣告而執行的一種基於json的開放標準 rfc 7519 該token被設計為緊湊且安全的,特別適用於分布式站點的單點登入 sso 場景。secreate key 是我們儲存再服務端服務端的隨機字串...

BaseSpider在scrapy中的使用

scrapy中繼承自basespider的爬蟲是不被推薦的,如下所示 python view plain copy from scrapy.spider import basespider class negativecommentscrapy basespider 檢視scrapy的原始碼,在sc...