衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SSO單點登錄和OAuth2.0的區別和理解

Android編程精選 ? 來源:CSDN ? 作者:CSDN ? 2022-11-07 11:41 ? 次閱讀

一、概述

SSO是Single Sign On的縮寫,OAuth是Open Authority的縮寫,這兩者都是使用令牌的方式來代替用戶密碼訪問應用。流程上來說他們非常相似,但概念上又十分不同。SSO大家應該比較熟悉,它將登錄認證和業務系統分離,使用獨立的登錄中心,實現了在登錄中心登錄后,所有相關的業務系統都能免登錄訪問資源。

OAuth2.0原理可能比較陌生,但平時用的卻很多,比如訪問某網站想留言又不想注冊時使用了微信授權。以上兩者,你在業務系統中都沒有賬號和密碼,賬號密碼是存放在登錄中心或微信服務器中的,這就是所謂的使用令牌代替賬號密碼訪問應用。

二、SSO

兩者有很多相似之處,下面我們來解釋一下這個過程。先來講解SSO,通過SSO對比OAuth2.0,才比較好理解OAuth2.0的原理。SSO的實現有很多框架,比如CAS框架,以下是CAS框架的官方流程圖。特別注意:SSO是一種思想,而CAS只是實現這種思想的一種框架而已

f7809178-5dc7-11ed-a3b6-dac502259ad0.png

上面的流程大概為:

用戶輸入網址進入業務系統Protected App,系統發現用戶未登錄,將用戶重定向到單點登錄系統CAS Server,并帶上自身地址service參數

用戶瀏覽器重定向到單點登錄系統,系統檢查該用戶是否登錄,這是SSO(這里是CAS)系統的第一個接口,該接口如果用戶未登錄,則將用戶重定向到登錄界面,如果已登錄,則設置全局session,并重定向到業務系統

用戶填寫密碼后提交登錄,注意此時的登錄界面是SSO系統提供的,只有SSO系統保存了用戶的密碼,

SSO系統驗證密碼是否正確,若正確則重定向到業務系統,并帶上SSO系統的簽發的ticket

瀏覽器重定向到業務系統的登錄接口,這個登錄接口是不需要密碼的,而是帶上SSO的ticket,業務系統拿著ticket請求SSO系統,獲取用戶信息。并設置局部session,表示登錄成功返回給瀏覽器sessionId(tomcat中叫JSESSIONID)

之后所有的交互用sessionId與業務系統交互即可

最常見的例子是,我們打開淘寶APP,首頁就會有天貓、聚劃算等服務的鏈接,當你點擊以后就直接跳過去了,并沒有讓你再登錄一次

三、OAuth2.0

OAuth2.0有多種模式,這里講的是OAuth2.0授權碼模式,OAuth2.0的流程跟SSO差不多,在OAuth2中,有授權服務器、資源服務器、客戶端這樣幾個角色,當我們用它來實現SSO的時候是不需要資源服務器這個角色的,有授權服務器和客戶端就夠了。

授權服務器當然是用來做認證的,客戶端就是各個應用系統,我們只需要登錄成功后拿到用戶信息以及用戶所擁有的權限即可

用戶在某網站上點擊使用微信授權,這里的某網站就類似業務系統,微信授權服務器就類似單點登錄系統

之后微信授權服務器返回一個確認授權頁面,類似登錄界面,這個頁面當然是微信的而不是業務系統的

用戶確認授權,類似填寫了賬號和密碼,提交后微信鑒權并返回一個ticket,并重定向業務系統。

業務系統帶上ticket訪問微信服務器,微信服務器返回正式的token,業務系統就可以使用token獲取用戶信息了

簡介一下OAuth2.0的四種模式:

授權碼(authorization-code)

授權碼(authorization code)方式,指的是第三方應用先申請一個授權碼,然后再用該碼獲取令牌。這種方式是最常用的流程,安全性也最高,它適用于那些有后端的 Web 應用。授權碼通過前端傳送,令牌則是儲存在后端,而且所有與資源服務器的通信都在后端完成。這樣的前后端分離,可以避免令牌泄漏。

隱藏式(implicit)

有些 Web 應用是純前端應用,沒有后端。這時就不能用上面的方式了,必須將令牌儲存在前端。RFC 6749 就規定了第二種方式,允許直接向前端頒發令牌。這種方式沒有授權碼這個中間步驟,所以稱為(授權碼)“隱藏式”(implicit)

密碼式(password)

如果你高度信任某個應用,RFC 6749 也允許用戶把用戶名和密碼,直接告訴該應用。該應用就使用你的密碼,申請令牌,這種方式稱為"密碼式"(password)。

客戶端憑證(client credentials)

最后一種方式是憑證式(client credentials),適用于沒有前端的命令行應用,即在命令行下請求令牌。

簡單流程

f961ef00-5dc7-11ed-a3b6-dac502259ad0.png

四、說一下幾個名詞的區別

首先,SSO是一種思想,或者說是一種解決方案,是抽象的,我們要做的就是按照它的這種思想去實現它

其次,OAuth2是用來允許用戶授權第三方應用訪問他在另一個服務器上的資源的一種協議,它不是用來做單點登錄的,但我們可以利用它來實現單點登錄。在本例實現SSO的過程中,受保護的資源就是用戶的信息(包括,用戶的基本信息,以及用戶所具有的權限),而我們想要訪問這這一資源就需要用戶登錄并授權,OAuth2服務端負責令牌的發放等操作,這令牌的生成我們采用JWT,也就是說JWT是用來承載用戶的Access_Token的

最后,Spring Security、Shiro是用于安全訪問的,用來做訪問權限控制,都是一個用Java寫的框架

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9304

    瀏覽量

    86066
  • SSO
    SSO
    +關注

    關注

    0

    文章

    9

    瀏覽量

    7513

原文標題:SSO 單點登錄和 OAuth2.0 的區別和理解

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Java微服務中如何確保安全性?

    在Java微服務架構中確保安全性,可以采取以下措施: 身份驗證與授權: 使用OAuth 2.0和OpenID Connect框架進行身份驗證和授權。OAuth2允許用戶在不分享憑證的情況下授權第三方
    的頭像 發表于 01-02 15:21 ?159次閱讀

    如何遠程登錄路由器

    當路由器放置在機房、弱電箱等不方便直接操作的位置,或當網絡出現故障或者需要遠程協助時遠程登錄路由器可以極大的解決問,本期重點說明遠程登錄路由器的方法,供各位參考使用: 首先 ,需要確保家里的路由器
    的頭像 發表于 12-18 12:01 ?204次閱讀
    如何遠程<b class='flag-5'>登錄</b>路由器

    AD9814如何與AGND和DGND連接?分別單點接地嗎?

    需要一個單獨的地平面,即除了AGND和DGND,還需要一個AD_GND。那這個AD_GND如何與AGND和DGND連接?分別單點接地嗎? 2. single理解為“同一個”,強調AD9814下面不分
    發表于 12-05 06:33

    單點位移計:從原理到應用,一文讀懂!

    在工程、材料乃至地質監測領域,每一個微小的變動都可能蘊含著重要的信息。如何捕捉這些細微之處呢?答案就藏在一種名為“單點位移計”的神奇儀器中。今天,就讓我們一起走進單點位移計的世界,探索它的工作原理
    的頭像 發表于 11-25 15:54 ?312次閱讀
    <b class='flag-5'>單點</b>位移計:從原理到應用,一文讀懂!

    HDMI2.0和HDMI2.1有沒有區別

    HDMI 2.0 VS HDMI 2.1 主要區別 帶寬 HDMI 2.0:支持18Gbps的帶寬,能夠傳輸4K@60Hz的視頻信號。 HDMI 2.1:支持48Gbps的帶寬,能夠傳輸
    的頭像 發表于 11-01 15:03 ?1742次閱讀

    多點觸控和單點觸控哪個好

    多點觸控和單點觸控各有其優缺點,具體哪個更好取決于應用場景和用戶需求。以下是對兩者的詳細比較:
    的頭像 發表于 10-21 15:36 ?732次閱讀

    多點觸控和單點觸控區別

     多點觸控和單點觸控是觸摸屏技術的兩種主要類型,它們在功能、應用場景以及用戶體驗等方面存在顯著差異。以下是對這兩種觸控技術的詳細比較:
    的頭像 發表于 10-21 15:35 ?1587次閱讀

    交換機如何配置SSH遠程登錄

    從事網絡運維工作的小伙伴們都知道,在交換機正式上線時,必須完成配置SSH遠程登錄,這樣做目的是為了日后,維護方便,不需要每次登錄設備都要跑到機房,這樣既不現實,又費事。
    的頭像 發表于 10-10 14:33 ?1331次閱讀
    交換機如何配置SSH遠程<b class='flag-5'>登錄</b>

    HDMI 2.0與HDMI 2.1有什么區別

    HDMI 2.0與HDMI 2.1是高清多媒體接口(High-Definition Multimedia Interface)的兩個不同版本,它們在帶寬、傳輸速度、支持的視頻格式、顯示效果以及新技術支持等方面存在顯著差異。以下是對兩者區別的詳細分析,旨在提供全面且深入的
    的頭像 發表于 07-25 18:15 ?4.5w次閱讀

    HDMI 2.1與HDMI 2.0:深度解析兩者的區別

    的不斷發展,HDMI標準也經歷了從1.0到2.1的演進。本文將重點探討HDMI 2.1與HDMI 2.0之間的主要區別,幫助讀者更好地理解兩者的差異。 一、帶寬差異 HDMI 2.0
    的頭像 發表于 07-09 14:40 ?3719次閱讀

    hdmi2.1和2.0的顯著區別

    HDMI 2.1和HDMI 2.0在多個方面存在顯著的差異。以下是它們之間的主要區別: 傳輸速度: HDMI 2.0的傳輸頻寬為18Gbps。 HDMI 2.1的傳輸頻寬大幅擴張到48Gbps,這是
    的頭像 發表于 06-21 10:10 ?1430次閱讀

    hdmi線1.4和2.0有啥區別

    HDMI線1.4和2.0在多個方面存在顯著的區別,以下是對它們之間差異的分點表示和歸納: 最大帶寬: HDMI 1.4:最大帶寬為10.2 Gbps。 HDMI 2.0:最大帶寬提升至18 Gbps
    的頭像 發表于 06-21 10:00 ?3538次閱讀

    英飛凌推出新型SSO10T TSC頂部冷卻封裝

    英飛凌科技近日發布了一款采用OptiMOS? MOSFET技術的SSO10T TSC封裝。這款封裝憑借其獨特的頂部直接冷卻技術,為汽車電子控制單元提供了卓越的散熱性能,有效防止熱量傳遞至印刷電路板(PCB)。
    的頭像 發表于 05-07 15:10 ?696次閱讀

    格力博與芯盾時代攜手建設SSO單點登錄系統,打破業務應用之間的壁壘

    隨著我國制造業數字化轉型持續深入,身份安全的重要性日益凸顯。
    的頭像 發表于 04-12 09:43 ?524次閱讀

    usb3.0和2.0的!!!

    USB 3.0和USB 2.0是USB接口的不同版本,它們之間有以下主要區別: 1. **傳輸速度**:USB 3.0的最大傳輸速度為5Gbps,是USB 2.0傳輸速度(480Mbps)的約10倍
    的頭像 發表于 04-07 00:23 ?803次閱讀
    全讯网vc8888.com| 明升娱乐| 百家乐官网技巧运气| 百家乐官网博娱乐场| 百家乐德州扑克轮盘| 博彩选名门国际| 现金百家乐官网下载| 泰山百家乐的玩法技巧和规则| 古蔺县| 百家乐闲庄概率| 大发888注册 大发888官网| 网络百家乐官网真假| 网上真钱老虎机| 虎和鼠做生意和财吗| 德州扑克发牌规则| 狮威百家乐官网娱乐场| 百家乐筹码片| 澳门玩百家乐官网赢1000万| 百家乐常用公式| 百家乐官网娱乐城主页| 网络百家乐必胜投注方法| 五华县| 太阳城百家乐分析解码| 西盟| 澳门百家乐庄闲和| 临汾市| 百家乐透视牌靴哪里有| 金山区| 百家乐投注综合分析法| 百家乐官网从哪而来| 澳门百家乐是怎样赌| 利高百家乐官网现金网| 海王星百家乐的玩法技巧和规则| 博E百百家乐官网娱乐城| 百家乐透明发牌靴| 保险百家乐官网怎么玩| 亚洲百家乐博彩的玩法技巧和规则| 哪个百家乐官网平台信誉好| 优惠搏百家乐的玩法技巧和规则| 百家乐官网澳门百家乐官网| 手机百家乐能兑换现金棋牌游戏|