微服務中token鑒權設計的4種方式

1. JWT鑒權

「概述」:JWT是一種用于雙方之間安全傳輸信息的簡潔的、URL安全的令牌標準。它基于JSON格式,包含三個部分:頭部(Header)、負載(Payload)和簽名(Signature)。JWT常用于身份驗證和信息交換,特別適用于分布式系統和微服務架構。
在這里插入圖片描述
「實現步驟」:

1、「用戶登錄」:

用戶提交用戶名和密碼到認證服務。
認證服務驗證用戶名和密碼的正確性。
如果驗證通過,生成JWT,其中包含用戶身份信息、權限信息和過期時間等。
將JWT返回給用戶。

2、「存儲JWT」:

客戶端(如瀏覽器、移動應用)將JWT存儲在本地(如localStorage、sessionStorage、SharedPreferences)。

3、「請求攜帶JWT」:

客戶端在后續請求中,通過HTTP頭部(如Authorization: Bearer {Token})攜帶JWT。

4、「服務端驗證JWT」:

服務端接收到請求后,從HTTP頭部提取JWT。
使用與生成JWT時相同的密鑰和算法驗證JWT的簽名。
如果JWT有效,根據JWT中的信息執行相應的業務邏輯。

「優點」:

「無狀態性」:服務端不需要保存會話狀態,所有驗證信息都包含在JWT中。
「易于傳輸」:JWT結構緊湊,可以直接嵌入HTTP頭部。
「安全性」:JWT可以使用HMAC或RSA算法進行簽名,確保信息不被篡改。

2. OAuth 2.0鑒權

「概述」:OAuth 2.0是一個開放標準,允許用戶授權第三方應用訪問他們存儲在另外的服務提供者上的信息,而無需將用戶名和密碼提供給第三方應用。OAuth 2.0提供了授權令牌(Access Token)和刷新令牌(Refresh Token)兩種類型的令牌。
在這里插入圖片描述

「實現步驟」:

1、「授權服務器」:

實現OAuth 2.0授權服務器,處理用戶授權和令牌發放。
用戶通過授權服務器進行授權,授權服務器生成Access Token和(可選的)Refresh Token,并返回給客戶端。

2、「資源服務器」:

保護需要鑒權的資源,通過驗證Access Token來授權訪問。

3、「客戶端」:

引導用戶到授權服務器進行授權。
獲取Access Token后,使用Access Token訪問資源服務器。
如果Access Token過期,可以使用Refresh Token向授權服務器請求新的Access Token。

「優點」:

「安全性高」:用戶不需要將密碼直接暴露給第三方應用。
「靈活性」:支持多種授權模式,如授權碼模式、密碼模式、客戶端憑據模式等。
「廣泛支持」:許多主流平臺和框架都支持OAuth 2.0。

3. 統一授權中心(API Gateway)

「概述」:在微服務架構中,使用API Gateway作為統一入口,進行集中認證和授權。API Gateway負責接收外部請求,進行認證和授權后,將請求轉發到相應的微服務實例。
在這里插入圖片描述
在這里插入圖片描述

「實現步驟」:

1、「部署API Gateway」:

在微服務集群前端部署API Gateway。
配置API Gateway以識別不同的微服務路由。

2、「認證和授權」:

API Gateway接收外部請求后,首先進行認證(如驗證JWT或OAuth Token)。
根據認證結果進行授權,檢查用戶是否有權限訪問請求的資源。

3、「轉發請求」:

如果認證和授權都通過,API Gateway將請求轉發到相應的微服務實例。
微服務實例處理請求后,將響應返回給API Gateway。
API Gateway將響應返回給客戶端。

「優點」:

「集中管理」:簡化了認證和授權邏輯的管理,降低了維護成本。
「安全性高」:所有外部請求都通過API Gateway進行認證和授權,提高了系統的安全性。
「可擴展性」:API Gateway可以作為擴展點,支持更多的認證和授權機制。

4. 微服務內部調用鑒權

對于微服務之間的內部調用,鑒權方案通常比外部調用簡單,但也需要考慮安全性和權限控制。

「方案」:

1、「Token透傳」:

在微服務內部調用時,將Token作為請求參數或頭部進行透傳。
接收方微服務驗證Token的有效性,并根據Token中的權限信息進行授權。

2、「基于角色的訪問控制(RBAC)」:

在微服務內部實現RBAC機制,根據調用方的角色進行授權。
角色信息可以通過服務注冊中心、配置中心或專門的權限服務進行共享。

3、「無鑒權」:

對于完全信任的內部調用,可以不進行鑒權。
但這種方式需要確保微服務之間的調用是安全的,避免被惡意利用。

5. 鑒權方案的選擇

在設計和實施Java微服務架構中的Token鑒權方案時,可以根據業務需求和安全要求選擇合適的鑒權方案。同時,鑒權方案的設計和實施需要考慮系統的可擴展性、可維護性和安全性。

「JWT(JSON Web Tokens)鑒權」:

優點:無狀態性使得服務端不需要保存會話狀態,易于傳輸且結構緊湊,安全性高。
適用場景:適用于需要快速驗證用戶身份且不需要頻繁更新用戶權限的場景。

「OAuth 2.0鑒權」:

優點:安全性高,用戶不需要將密碼暴露給第三方應用,支持多種授權模式,廣泛支持。
適用場景:適用于需要第三方應用訪問用戶存儲在服務提供者上的信息的場景。

「統一授權中心(API Gateway)」:

優點:集中管理簡化了認證和授權邏輯的管理,提高了系統的安全性,可擴展性強。
適用場景:適用于微服務架構中,作為統一入口進行集中認證和授權的場景。

「微服務內部調用鑒權」:

優點:實現簡單,可以根據實際需求選擇透傳Token、基于角色的訪問控制或無鑒權等方式。
適用場景:適用于微服務之間的內部調用,需要根據實際需求選擇合適的鑒權方式。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/89362.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/89362.shtml
英文地址,請注明出處:http://en.pswp.cn/web/89362.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

nodejs搭建

1.創建一個空文件夾,在vscode中打開 2.執行命令開啟package文件 npm init -y3.設置根目錄文件app.js 先執行 npm install express 命令安裝 express 模塊 執行 npm install cors 命令安裝 cors 模塊 // app.js const express require(express) const app express…

frp內網穿透(二)

frp內網穿透(二) 前言 前篇內網穿透 上面一文中已描述如何安裝frp進行內網穿透,并配置ssh穿透連接內網服務器,本篇主要介紹如何配置web服務 使用場景 A服務器為公網服務器,B服務器為家庭中內網服務器,且B…

Spring 應用中 Swagger 2.0 遷移 OpenAPI 3.0 詳解:配置、注解與實踐

從 Swagger 2.0 到 OpenAPI 3.0 的升級指南 為什么升級 OpenAPI 3.0提供了更強大的功能、更簡潔的配置和更好的性能,同時保持了與 Swagger 2.0 的基本兼容性。本文將詳細介紹升級的各個步驟,并提供代碼示例。 1. 依賴管理的變化 Swagger 2.0 依賴配置 &l…

用 Flink CEP 打造實時超時預警:從理論到實戰

目錄 1. Flink CEP 是什么?為什么它能讓你的數據“開口說話”? 2. 超時預警的業務場景:從電商到物聯網 3. Flink CEP 超時機制的核心原理 3.1 模式匹配與時間窗口 3.2 超時事件的處理 3.3 事件時間與水位線 3.4 核心組件一覽 4. 實戰案例:電商訂單超時預警 4.1 準備…

Rocky Linux 9 源碼包安裝php7

Rocky Linux 9 源碼包安裝php7大家好!我是星哥。盡管現在 PHP 版本已迭代至 8.x,但有時為了兼容遺留系統或特定應用需求,我們仍需部署特定版本的 PHP。最主要的是之前的項目采用的PHP7.3,未來兼容舊的項目, 今天&#…

uniapp+vue3+鴻蒙系統的開發

前言: uniappvue3鴻蒙系統的開發。 實現效果: 鴻蒙pad端真機測試效果-下面是正常的日志效果 實現步驟: 1、安裝鴻蒙的開發工具,點擊安裝,注意版本不能太舊了 deveco-studio 2、下載下來是個壓縮包,解壓后…

【C++類和對象解密】面向對象編程的核心概念(下)

之前我們了解到構造函數是在對象實例化之時對對象完成初始化工作的一個函數。在我們不寫時,編譯器會自動生成構造函數。構造函數有一些特點,比如,他對內置類型不做處理,對自定義類型的成員會去調用其自身的構造。我們上篇文章還提…

Flutter基礎(前端教程①②-序列幀動畫)

🧠 核心思路總結??徹底繞過 Image組件重建帶來的性能瓶頸??:不再讓 setState重建包含 Image的 Widget 樹(這是開銷大、可能導致閃爍的根源),改為使用底層畫布 (Canvas) 直接繪制預先處理好的圖像幀數據。好的&…

Qt添加dmp文件生成及pdb文件

1.Pdb文件生成 下圖先通過構建生成Pdb文件,然后運行程序,通過提前準備的崩潰按鈕使得程序崩潰,生成“dump文件”的演示。 # #添加dmp文件生成及pdb文件生成DEFINES QT_MESSAGELOGCONTEXT DEFINES QT_DEPRECATED_WARNINGS# # 添加DUMP文件…

opencv、torch、torchvision、tensorflow的區別

一、框架定位與核心差異PyTorch動態計算圖:實時構建計算圖支持Python原生控制流(如循環/條件),調試便捷。學術主導:2025年工業部署份額24%,適合快速原型開發(如無人機自動駕駛、情緒識別&#x…

離散與組合數學 雜記

生成函數 概念 又稱母函數把一個無窮數列 {an}\{a_n\}{an?}(默認從 000 項起)表示成 G(x)∑i≥0aixiG(x)\displaystyle\sum_{i\ge0} a_ix^iG(x)i≥0∑?ai?xi 的函數形式。例如: ai2ia_i2^iai?2i:G(x)∑i≥02ixiG(x)\display…

學習OpenCV---顯示圖片

學習OpenCV—顯示圖片 最近在學習OpenCV入門,于是記錄一下自己的學習過程。 一、配置環境 第一步 從官方網站中下載OpenCV開源庫。官方下載網站 打開官網后,能看到有很多的版本。我個人下載的是4.11.0版本。點擊圖中的下載 下載完成后,解…

第一次接觸自動化監測,需要付費廠家安裝服務嗎?比人工測量主要區別是啥?

人工檢測是依靠目測檢查或借助于便攜式儀器測量得到的信息,但是隨著整個行業的發展,傳統的人工檢測方法已經不能滿足檢測需求,從人工檢測到自動化監測已是必然趨勢。 a. 從檢測方式看 人工檢測需要耗費大量的精力,從擺放檢測工具到…

VMware Workstation Pro 17下載安裝

注冊賬號 進入下載地址:Free Downloads - Support Portal - Broadcom support portal - https://support.broadcom.com/ 會讓注冊賬號,注冊一個就行 在右上角 下載 地址:Free Downloads - Support Portal - Broadcom support portal - ht…

SpringBoot 3.x集成阿里云OSS:文件上傳 斷點續傳 權限控制

SpringBoot 3.x集成阿里云OSS:文件上傳/斷點續傳/權限控制Spring Boot 3.x 集成阿里云 OSS 終極指南一、環境準備與依賴配置1. 添加阿里云 OSS SDK 依賴2. 配置 OSS 連接參數二、基礎文件上傳服務1. OSS 客戶端配置2. 文件上傳服務三、斷點續…

牛客周賽 Round 100

A小紅的雙排列沒什么好說的 直接 1 1 2 2 3 3 4 4……#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<iostream> #include<bits/stdc.h> #define ll long long using namespace std; int n; int main(){ios::sync_with_stdio(false); …

【Dv3Admin】菜單管理集成阿里巴巴自定義矢量圖標庫

圖標選擇是后臺管理系統中高頻功能。相比用 Element UI、Ant Design 等自帶的 icon 集&#xff0c;阿里巴巴 iconfont.cn 支持上傳和管理自定義圖標&#xff0c;并生成矢量字體&#xff0c;便于統一維護和擴展。 本文目標是支持自定義 iconfont 圖標的展示和選擇&#xff0c;并…

NO.7數據結構樹|線索二叉樹|樹森林二叉樹轉化|樹森林遍歷|并查集|二叉排序樹|平衡二叉樹|哈夫曼樹|哈夫曼編碼

線索二叉樹 線索二叉樹的基本概念 為了解決無法直接找到該結點在某種遍歷序列中的前驅和后繼結點的問題&#xff0c; 出現了線索二叉樹。 一個二叉樹通過如下的方法“穿起來” &#xff1a; 所有原本為空的右(孩子)指針改為指向該節點在某種遍歷序列中的后繼&#xff0c; 所有原…

R語言基礎| 基本圖形繪制(條形圖、堆積圖、分組圖、填充條形圖、均值條形圖)

目錄 一、前言 二、條形圖 1. 簡單的條形圖 2.堆積、分組和填充條形圖(柱狀圖) &#xff08;1&#xff09;堆積圖&#xff0c;對Improved進行堆積&#xff0c;注意position“stack” &#xff08;2&#xff09;分組圖&#xff0c;對Improved進行分組&#xff0c;注意posit…

SegNet:一種用于圖像分割的深度卷積編碼器解碼器架構

教程/講解視頻點擊文末名片1、什么是語義分割&#xff0c;什么是FCN 我們提出了一種新穎且實用的深度全卷積神經網絡架構&#xff0c;用于語義像素級分割&#xff0c;命名為SegNet。 語義分割是指為圖像中的每個像素分配一個類別標簽&#xff08;如道路、天空、汽車&#xff09…