使用JWT的Cloud Native应用程序
本機云應用程序是為云計算環境開發的應用程序。
對于“ 什么是云原生應用程序 ”這個問題沒有具體答案,但是必須滿足不同的概念。
在我看來,最重要的功能之一就是能夠快速縮放 。 這意味著我們的應用程序在每臺服務器上都無法具有任何狀態,因為如果一臺服務器宕機或規模縮小,那么存儲在該服務器中的狀態將丟失。
https://www.youtube.com/watch?v=osz-MT3AxqA對此進行了很好的總結,并以購物車示例進行了說明。 在整體方法中,您將購物車的產品存儲在服務器會話中,如果服務器出現故障,則購物車的所有產品也會丟失。 在云原生應用程序中 ,可以快速擴展和縮減服務器實例,重要的是不要在服務上具有這種有狀態的行為,而應將它們設計為無狀態。
有多種方法可以實現實現無狀態體系結構的目標,但可以將它們概括為兩類:
- 使用分布式內存鍵/值數據存儲,例如Infinispan。
- 使用令牌,該令牌用作客戶端和服務器之間的會話 ,例如使用JWT 。
在本文中,我將向您介紹后面的方法。
從https://jwt.io/introduction/網站:
JSON Web令牌(JWT)是一個開放標準(RFC 7519),它定義了一種緊湊且自包含的方式,用于在各方之間作為JSON對象安全地傳輸信息。
由于此信息是經過數字簽名的,因此可以被驗證和信任。 可以通過使用HMAC的機密或使用RSA的公/私鑰對對JWT進行簽名。
JSON Web令牌包含三個由點分隔的Base64Url字符串,它們是:Header.Payload.Signature
因此,使用JWT在后端實現無狀態架構的基本思想是下一個:
如您所見,現在無需維護任何狀態或在后端添加任何新的數據庫服務,您只需要發送和轉發JWT令牌以及內部產品。
我錄制了一個簡單購物車示例的視頻,其中演示了該解決方案的無狀態本質。 可以在以下位置看到:
另外,如果您想檢查我用于錄制的項目,可以查看https://github.com/lordofthejars/shop-jwt 。
注意,這只是一個簡單的文章,因此您可以了解基本思想。 但是您需要考慮在生產中使用它的下一步操作:
您可以在JavaZone上觀看我的演講,其中介紹了其中一些技巧:
使您的REST服務免受攻擊– Vimeo上 JavaZone的 Alex Soto Bueno
JWT方法的優點在于,它極大地簡化了服務的部署,您無需部署或配置任何其他分布式數據庫即可在整個群集中共享內容,從而將與網絡通信所需的問題最小化分布式數據庫或任何節點的配置錯誤。
缺點是客戶端需要知道接收和發送回令牌并進行處理。 在后端,您需要一直簽名并驗證每個令牌。
翻譯自: https://www.javacodegeeks.com/2018/01/cloud-native-applications-jwt.html
總結
以上是生活随笔為你收集整理的使用JWT的Cloud Native应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件这样卸载才干净电脑如何彻底卸载软件
- 下一篇: 使用JCache缓存方法结果