架構面試-場景題-單點登錄(SSO)怎么實現的

文章目錄

  • 概述
  • 基于Cookie
  • 基于Token(OAuth, JWT)
  • 集中式認證服務 (CAS, SAML)
  • 分布式Session:
  • 輕型目錄訪問協議(LDAP)
  • OAuth 2.0/OIDC
  • Kerberos

概述

單點登錄(Single Sign-On,簡稱SSO)是一種身份驗證機制,允許用戶在多個應用程序和網站上使用一個憑據進行登錄, 就是說 允許用戶在多個應用或服務中只需進行一次身份驗證即可訪問所有授權的服務

基于Cookie

利用父域的Cookie機制,在主域名下設置一個共享的Cookie,子域名可以讀取這個Cookie來確認用戶的身份。
這種方法適用于同主域名下的多個子域名之間的SSO,但如果不同主域名則不適用。
優點: 實現簡單,適用于同主域名下的多個子域名之間。
缺點: 不適用于跨主域名的情況,安全性較低,容易受到中間人攻擊和跨站腳本(XSS)攻擊。

基于Token(OAuth, JWT)

用戶在身份提供者處驗證后,獲得一個Token(例如OAuth中的Access Token或JWT)。
Token被存儲在客戶端(如Cookie、LocalStorage)或服務器端(如Session),當用戶訪問其他應用時,應用通過Token驗證用戶身份。
這種方式支持跨域,且更安全,因為Token可以加密。

優點: 支持跨域,Token可加密傳輸,提高安全性;Token可以離線存儲,減輕服務器負擔。
缺點: 需要妥善管理Token的有效期和安全性,防止Token泄露;JWT如果過長可能影響性能。

集中式認證服務 (CAS, SAML)

中心化認證服務作為單一入口,所有應用都依賴它進行身份驗證。
用戶在CAS/SAML服務器上登錄后,CAS/SAML服務器會生成一個Ticket或Assertion傳遞給應用,應用再使用這個Ticket或Assertion與CAS/SAML服務器通信,確認用戶身份。
CAS和SAML是兩種廣泛使用的集中式認證協議。

優點: 提供標準化的SSO解決方案,易于集成;能夠支持多種不同的應用和服務。
缺點: 中心化服務可能成為單點故障;配置和維護較為復雜。

分布式Session:

使用共享的Session存儲(如Redis、Memcached),所有應用都可以訪問同一個Session存儲。
用戶在任一應用登錄后,Session信息被寫入共享存儲,其他應用可以通過讀取這個共享Session來確定用戶狀態。

優點: 提高了應用的擴展性和可用性,Session數據可以在集群中共享。
缺點: 增加了對共享存儲系統的依賴,存儲系統故障會影響整個SSO流程。

輕型目錄訪問協議(LDAP)

LDAP用于存儲和檢索網絡上的用戶和組信息,支持SSO。
應用通過查詢LDAP服務器驗證用戶身份,避免了每個應用單獨維護用戶信息。

優點: 便于管理和查詢用戶信息,適用于大型企業環境。
缺點: 配置和維護相對復雜,不適合小型或臨時項目。

OAuth 2.0/OIDC

OAuth 2.0是一個授權框架,OpenID Connect(OIDC)建立在OAuth 2.0之上,提供了身份驗證功能。
用戶在一個授權服務器上登錄后,授權服務器向客戶端應用頒發令牌,應用使用這些令牌來訪問資源服務器或確認用戶身份。

優點: 標準化接口,易于第三方應用集成;支持多種授權模式。
缺點: 實現細節較多,需要仔細設計安全措施;可能存在權限過寬的問題。

Kerberos

Kerberos是一種網絡認證協議,特別適合企業內部網絡環境,支持SSO。
Kerberos使用票證(Ticket)機制來驗證用戶和服務,用戶登錄后會收到一系列票證,這些票證可以用于訪問網絡中的其他服務而無需再次輸入密碼。

優點: 安全性高,適用于大型企業內部網絡;支持多種認證機制。
缺點: 配置復雜,維護成本高;僅限于內部網絡,不適用于互聯網環境。

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

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

相關文章

掌握【Python異常處理】:打造健壯代碼的現代編程指南

目錄 ?編輯 1. 什么是異常? 知識點 示例 小李的理解 2. 常見的內置異常類型 知識點 示例 小李的理解 3. 異常機制的意義 知識點 示例 小李的理解 4. 如何處理異常 知識點 示例 小李的理解 5. 拋出異常 知識點 示例 小李的理解 6. Python內置…

Springboot整合Jsch-Sftp

背景 開發一個基于jsch的sftp工具類&#xff0c;方便在以后的項目中使用。寫代碼的過程記錄下來&#xff0c;作為備忘錄。。。 Maven依賴 springboot依賴 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-par…

codeforces 1633A

文章目錄 1. 題目鏈接2. 題目代碼正確代碼錯誤代碼 3. 題目總結 1. 題目鏈接 Div. 7 2. 題目代碼 正確代碼 #include<iostream> using namespace std; int main(){int testCase;cin >> testCase;while(testCase --){int ingeter;cin >> ingeter;if(!(inget…

SpringBoot彩蛋之定制啟動畫面

寫在前面 在日常開發中&#xff0c;我們經常會看到各種各樣的啟動畫面。例如以下幾種 ① spring項目啟動畫面 ② mybatisplus啟動畫面 ③若依項目啟動畫面 還有很多各式各樣好看的啟動畫面&#xff0c;那么怎么定制這些啟動畫面呢&#xff1f; 一、小試牛刀 ① 新建一個Spr…

Java 8 到 Java 22 新特性詳解

Java 8 到 Java 22 新特性詳解 Java自發布以來一直在不斷演進&#xff0c;添加新特性以提升開發效率和性能。本文將介紹Java 8到Java 22的主要新特性&#xff0c;幫助開發者了解各版本的新功能和改進。 Java 8 (2014) 1. Lambda 表達式 Lambda 表達式允許使用簡潔的語法定義…

SQL 之 concat_ws和concat的區別

concat_ws和concat都是用于連接字符串的函數&#xff0c;但它們在使用上有一些區別&#xff1a; 一、concat、concat_ws函數格式&#xff1a; concat格式&#xff1a; concat&#xff08;參數1,參數2,…參數n&#xff09;&#xff0c;如果要加’分隔符’直接寫在 各參數中間就…

關于微信支付-商戶平臺:查詢訂單提示“查詢失敗:操作失敗,請稍候重試”的分析

目錄 引子 分析 應對 小結 引子 在開發和實施微信 JSAPI 支付的應用后&#xff0c;我們遇到了一些問題&#xff0c;訂單的狀態更新不正常&#xff0c;當然我們首先需要從自身尋找原因和完善解決問題的辦法和方案。在支付的過程中&#xff0c;客戶會給我們一些反饋&#xf…

Open-Sora1.2環境搭建推理測試

引子 前陣子寫了一篇Open-Sora1.0環境搭建&推理測試&#xff08;Open-Sora1.0環境搭建&推理測試_自己搭建sora服務-CSDN博客&#xff0c;感興趣的童鞋&#xff0c;請移步&#xff09;。Open-Sora1.1發布的時候&#xff0c;撇了一眼新聞。后面一轉頭&#xff0c;忘記這…

ARL聯動AWVS實現自動化漏洞掃描

0x01 前言 很多場景下需要大范圍的掃描漏洞和快速排查互聯網暴露面的漏洞&#xff0c;需要使用這種自動化的手段&#xff0c;常規滲透測試的找互聯網暴露面是&#xff0c;域名>子域名>IP>C段>端口&#xff0c;可以手動收集&#xff0c;也可以借助一些網絡搜索引擎…

css中偽元素 :: before的用法

在CSS中&#xff0c;偽元素 ::before 用于在選定元素的內容前插入內容。它常用于添加圖標、文本或裝飾性的元素&#xff0c;而不需要在HTML中實際添加額外的標簽。 以下是一個示例說明 ::before 的用法&#xff1a; <!DOCTYPE html> <html lang"en"> &…

一文解決Postman請求發送難題

標題&#xff1a;【技術深度解析】一文解決Postman請求發送難題 在API開發和測試過程中&#xff0c;Postman作為一款強大的工具&#xff0c;其重要性不言而喻。然而&#xff0c;開發者們時常會遇到Postman無法發送請求的問題&#xff0c;這無疑會嚴重影響開發進度和測試效率。…

wordpress網站添加一個臨時維護功能

把以下代碼放到functions.php文件中&#xff0c;主要用網站臨時維護或者用于備案。事情做好了&#xff0c;把以下代碼刪除即可&#xff01;&#xff01;&#xff01; 有時遇到一些情況&#xff0c;比如站點需要閉站備案、或者被要求停站等等&#xff0c;我們就可以使用本文的功…

開發個人Go-ChatGPT--5 模型管理 (三)

開發個人Go-ChatGPT–5 模型管理 (三) 服務部署 go-ChatGPT項目涉及的中間件服務較多&#xff0c;以下部署文件目錄&#xff1a; |-- chat-api | |-- etc | | -- config.yaml | -- logs |-- chat-rpc | |-- etc | | -- config.yaml | -- logs |-- docker-co…

CP AUTOSAR標準之UDPNetworkManagement(AUTOSAR_CP_SWS_UDPNetworkManagement)(更新中……)

1 簡介和功能概述 本文檔介紹了AUTOSAR UDP網絡管理(UdpNm)的概念、核心功能、可選功能、接口和配置問題。UdpNm旨在成為一項可選功能。它旨在與TCP/IP堆棧協同工作,獨立于所用通信系統的物理層。AUTOSAR UDP網絡管理是一種獨立于硬件的協議,可用于基于TCP/IP的系統(有關限制…

卡爾曼濾波Q和R怎么調

卡爾曼濾波器是一種有效的估計算法&#xff0c;主要用于在存在噪聲的環境中估計動態系統的狀態。它通過結合預測模型&#xff08;系統動態&#xff09;和觀測數據&#xff08;包括噪聲&#xff09;來實現這一點。在卡爾曼濾波中&#xff0c;調整過程噪聲協方差矩陣 ( Q ) 和測量…

Java中的標準輸入流簡述

System.in簡介 System.in 是標準輸入流&#xff0c;通常與鍵盤輸入相關聯。它是 InputStream 類型的對象&#xff0c;Java 使用它來從控制臺接收用戶輸入。在 Java 程序中&#xff0c;通常使用 Scanner 類來讀取 System.in 的輸入。 以下是一些關鍵點&#xff0c;解釋為什么需…

Kubernetes運維工程師必備:K8s 基礎面試題精編(一)

Kubernetes運維工程師必備:K8s 基礎面試題精編(一) 1. 什么是Kubernetes?2. Kubernetes如何實現容器編排?3. 說出k8s的常見資源對象?4. 什么是pod?5. Deployment介紹及使用?6. statefulesets介紹及使用?7. statefulesets和deployment區別?8. 什么是調度器(Scheduler…

The First項目報告:NvirWorld與區塊鏈游戲的未來

根據官方公告&#xff0c;The Fisrt現貨區將于2024年7月2日16:00上架NVIR/USDT交易對&#xff0c;NVIR是NvirWorld平臺的原生代幣。作為一個去中心化解決方案&#xff0c;NvirWorld為開發者提供了一個簡化且適應性強的環境&#xff0c;旨在通過優化的擴展解決方案來降低交易成本…

docker 本地部署大模型(ollama)

docker 安裝 ollama docker search ollama docker pull ollama/ollama###docker下載ollama部署 docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama### 下載模型 docker exec -it ollama ollama pull llama3### 交互式運行模型docker exec -i…

ECharts 最小高度設置指南

下面提供一份關于ECharts中設置最小高度的專業而詳細的文檔。這份文檔將涵蓋不同圖表類型的最小高度設置方法&#xff0c;適合初學者學習和參考。 ECharts 最小高度設置指南 1. 通用屬性 對于大多數圖表類型&#xff0c;可以使用以下通用屬性來控制最小高度&#xff1a; 1.…