欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SSO單點登錄和OAuth2.0區(qū)別小結

 更新時間:2024年06月23日 11:48:51   作者:Archie_java  
很多時候我們會使用單點登錄SSO或者OAuth2.0等身份驗證和授權來實現(xiàn)登錄,本文主要介紹了SSO單點登錄和OAuth2.0區(qū)別小結,具有一定的參考價值,感興趣的可以了解一下

在微服務時代,用戶需要在多個應用程序和服務之間進行無縫切換,同時保持其登錄狀態(tài)。我們可以通過單點登錄(SSO)或者 OAuth2.0 等身份驗證和授權協(xié)議來實現(xiàn)這一目標。

1、單點登錄(SSO)

單點登錄(SSO)是一種身份驗證方法,允許用戶在一個應用程序或服務中登錄后,無需再次輸入憑據(jù)即可訪問其他相關應用程序或服務。這種方法通過將登錄認證和業(yè)務系統(tǒng)分離,使用獨立的登錄中心,實現(xiàn)了在登錄中心登錄后,所有相關的業(yè)務系統(tǒng)都能免登錄訪問資源。

SSO 單點登錄的方案實際上有很多種:

  • 基于會話的單點登錄(Session-Based SSO):

這是最早和最簡單的單點登錄實現(xiàn)方式。當用戶在第一個應用程序中登錄時,服務器會創(chuàng)建一個會話,并將該會話 ID 存儲在用戶的瀏覽器中(通常是通過 Cookie)。當用戶訪問其他應用程序時,瀏覽器會發(fā)送該會話 ID,從而允許服務器驗證用戶的身份。此方法的缺點是它依賴于瀏覽器和會話狀態(tài),對于分布式或者微服務系統(tǒng)而言,可能需要在服務端做會話共享,但是服務端會話共享效率比較低,這不是一個好的方案。對這種方案感興趣的話可以看看松哥之前發(fā)的 Spring Session 會話共享的文章。

  • 基于令牌的單點登錄(Token-Based SSO):

這種方法通常使用 JSON Web Tokens(JWT)或類似的令牌格式。當用戶在第一個應用程序中登錄時,服務器會生成一個包含用戶信息的令牌,并將其發(fā)送給客戶端(通常是瀏覽器)??蛻舳藭鎯@個令牌,并在訪問其他應用程序時將其作為請求的一部分發(fā)送。應用程序會驗證令牌的有效性,并據(jù)此授予用戶訪問權限。這種方法更加安全和靈活,因為它不依賴于會話狀態(tài),可以在多個域和服務器之間工作。這種方案實際上有很多變種,但是目前大部分的分布式項目單點登錄基本上都是這種方案,或者是基于這種方案衍生出來的變種方案。

  • 基于 OAuth 的單點登錄(OAuth-Based SSO):

OAuth 是一個開放標準,允許用戶授權第三方應用程序訪問其存儲在另一個服務提供商上的信息,而無需將用戶名和密碼提供給該第三方應用程序。OAuth2.0 是最常用的版本,它支持多種授權流程,包括授權碼流程、隱式流程和客戶端憑據(jù)流程。

在單點登錄的上下文中,OAuth 可以用作一個中介,用戶在一個“授權服務器”上登錄,并獲得一個訪問令牌,該令牌可以用于訪問其他“資源服務器”上的資源。OAuth 提供了豐富的功能和安全性,但它也相對復雜,需要仔細配置和管理。松哥之前也專門寫過 OAuth2 相關的教程,大家在公眾號后臺回復 oauth2 有鏈接。

  • 基于SAML的單點登錄(SAML-Based SSO):

SAML(Security Assertion Markup Language)是一種 XML 框架,用于在不同安全域之間交換身份驗證和授權信息。SAML 允許一個實體(通常是身份提供商或 IdP)向另一個實體(通常是服務提供商或 SP)發(fā)送安全斷言,證明用戶已經(jīng)成功登錄。SAML 通常與 OAuth 結合使用,以提供更強大和靈活的單點登錄解決方案。但是 SAML 比較復雜,所以維護起來可能會有壓力。

回到具體的生產(chǎn)環(huán)境,選擇哪種單點登錄方案取決于具體的需求和環(huán)境。對于是分布式但是又比較簡單的內(nèi)部應用程序,基于會話的 SSO 可能就足夠了。但是大型分布式系統(tǒng),基于令牌或 OAuth 的 SSO 可能更合適。小伙伴還是要結合自己的實際項目去選擇。

2、OAuth2.0

OAuth2.0 是一種開放授權協(xié)議,允許用戶授權第三方應用程序訪問其存儲在服務提供商(如QQ、WeiXin、抖音等)上的特定資源。與 SSO 類似,OAuth2.0 也使用了令牌的概念來實現(xiàn)身份驗證和授權。

OAuth2.0 定義了四種授權模式,分別是:

  • 授權碼模式
  • 隱式模式
  • 密碼模式
  • 客戶端模式

其中,授權碼模式是最常用的一種模式,適用于那些有后端的 Web 應用程序。在這種模式下,第三方應用程序首先向授權服務器申請一個授權碼,然后使用這個授權碼向授權服務器請求訪問令牌。一旦獲得訪問令牌,第三方應用程序就可以使用這個令牌訪問用戶授權的資源。

注意,OAuth2.0 并不直接實現(xiàn)單點登錄功能。它主要關注授權和訪問控制,允許用戶授權第三方應用程序訪問其資源。然而,通過與其他技術(如SSO)結合使用,OAuth2.0 可以實現(xiàn)單點登錄的效果。

目前來說,如果你想在項目中使用 OAuth2 的話,主要有如下幾種主流框架:

  • Spring Security OAuth:Spring Security OAuth 是 Spring框架的一個擴展,提供了對 OAuth2 協(xié)議的全面支持。它允許開發(fā)者在 Spring 應用程序中輕松實現(xiàn) OAuth2 認證和授權流程,包括授權服務器、資源服務器和客戶端應用程序的配置。
  • Keycloak:Keycloak 是一個開源的身份和訪問管理解決方案,它支持 OAuth2、OpenID Connect 和其他身份協(xié)議。Keycloak 提供了一個易于使用的管理界面,允許開發(fā)者配置和管理 OAuth2 相關的設置,如客戶端、用戶和角色等。
  • Apache Oltu:Apache Oltu 是一個實現(xiàn)了 OAuth2 協(xié)議的 Java 庫,它提供了對 OAuth2 流程的抽象和簡化。Oltu 可以幫助開發(fā)者快速構建 OAuth2 客戶端和服務器組件,并支持多種授權流程,如授權碼流程、隱式流程等。

這些框架和庫提供了 OAuth2 協(xié)議的完整實現(xiàn),包括令牌生成、驗證、刷新、撤銷等。它們簡化了 OAuth2 流程的集成,使得開發(fā)者能夠專注于業(yè)務邏輯的實現(xiàn),而無需過多關注底層的認證和授權細節(jié)。

3、SSO 與 OAuth2.0

首先,SSO 主要關注用戶在多個應用程序和服務之間的無縫切換和保持登錄狀態(tài)的問題。它通過獨立的登錄中心來實現(xiàn)這一目標,使用戶只需在一個地方輸入憑據(jù)即可訪問所有相關應用程序和服務。而 OAuth2.0 則主要關注授權和訪問控制的問題,允許用戶授權第三方應用程序訪問其存儲在服務提供商上的特定資源。

其次,SSO 通常只涉及用戶、登錄中心和業(yè)務系統(tǒng)之間的交互,而 OAuth2.0 則涉及用戶、第三方應用程序、授權服務器和資源服務器之間的交互。這使得 OAuth2.0 更加復雜和靈活,適用于多種場景和應用程序類型。

到此這篇關于SSO單點登錄和OAuth2.0區(qū)別小結的文章就介紹到這了,更多相關SSO單點登錄 OAuth2.0內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 一文帶你了解ChatGPT?API的使用

    一文帶你了解ChatGPT?API的使用

    ChatGPT是OpenAI公司開發(fā)的一款基于自然語言處理技術的對話生成模型,,能夠自動學習自然語言數(shù)據(jù)的特征,并生成高質(zhì)量的語言文本。本文將為大家來介紹一下ChatGPT的API使用,希望對大家有所幫助
    2023-02-02
  • VScode訪問HTML頁面時相對位置正確但圖片卻加載不出來的解決辦法

    VScode訪問HTML頁面時相對位置正確但圖片卻加載不出來的解決辦法

    這篇文章主要介紹了VScode訪問HTML頁面時相對位置正確但圖片卻加載不出來的解決辦法,在使用VSCode編寫代碼并通過本地文件路徑(file://)打開HTML時,可能會因瀏覽器安全限制或路徑錯誤而無法正確加載圖片,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-10-10
  • 常見前端面試題及答案

    常見前端面試題及答案

    本文是在GitHub上看到一個大牛總結的前端常見面試題,很多問題問的都很好,很經(jīng)典、很有代表性。上面沒有答案,我就整理了一下,從網(wǎng)上找了一些相關問題的答案
    2016-08-08
  • vscode調(diào)試launch.json常用格式完整的案例

    vscode調(diào)試launch.json常用格式完整的案例

    VSCode的launch.json文件是用來配置調(diào)試器的,可以設置調(diào)試器的啟動方式、調(diào)試的目標文件、調(diào)試的參數(shù),等這篇文章主要給大家介紹了關于vscode調(diào)試launch.json常用格式的相關資料,需要的朋友可以參考下
    2024-06-06
  • flask+layui+echarts實現(xiàn)前端動態(tài)圖展示數(shù)據(jù)效果

    flask+layui+echarts實現(xiàn)前端動態(tài)圖展示數(shù)據(jù)效果

    這篇文章主要介紹了flask+layui+echarts實現(xiàn)前端動態(tài)圖展示數(shù)據(jù)效果,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 利用DeepSeek實現(xiàn)復雜Git操作的詳細過程

    利用DeepSeek實現(xiàn)復雜Git操作的詳細過程

    今天綜合利用 DeepSeek V3 和 R1 推理模型,成功解決了一個復雜的 Git 操作,謹以此文記錄 DeepSeek 使用心得,以備后續(xù)復盤,下面是小編給大家介紹的利用DeepSeek實現(xiàn)復雜Git操作的詳細過程,需要的朋友可以參考下
    2025-02-02
  • 本地部署DeepSeek開源多模態(tài)大模型Janus-Pro-7B實操教程

    本地部署DeepSeek開源多模態(tài)大模型Janus-Pro-7B實操教程

    文章介紹了Janus-Pro-7B,一個由DeepSeek開發(fā)的開源多模態(tài)AI模型,它在文本和圖像處理方面表現(xiàn)出色,并且具有強大的性能和靈活性,詳細介紹了如何在本地環(huán)境中部署Janus-Pro-7B,并展示了其在圖像理解和生成、文本生成、多模態(tài)推理等任務中的應用效果,感興趣的朋友一起看看吧
    2025-02-02
  • OpenManus本地部署的圖文教程分享

    OpenManus本地部署的圖文教程分享

    OpenManus,由 MetaGPT 團隊精心打造的開源項目,于2025年3月發(fā)布,它致力于模仿并改進 Manus 這一封閉式商業(yè) AI Agent 的核心功能,本文將為大家介紹OpenManus本地部署的相關教程,需要的可以參考下
    2025-03-03
  • visualstudio的.sln文件和.vcxproj文件的區(qū)別

    visualstudio的.sln文件和.vcxproj文件的區(qū)別

    .sln?文件和?.vcxproj?文件是兩個常用的項目文件,本文主要介紹了visualstudio的.sln文件和.vcxproj文件的區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • HttpGet請求與Post請求中參數(shù)亂碼原因剖析與解決方案

    HttpGet請求與Post請求中參數(shù)亂碼原因剖析與解決方案

    這篇文章主要介紹了HttpGet請求與Post請求中參數(shù)亂碼原因剖析,文中有相關的代碼示例,具有一定的參考價值,需要的朋友可以參考下
    2023-07-07

最新評論