0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SSO單點登錄和OAuth2.0的區(qū)別和理解

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

一、概述

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

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

二、SSO

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

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

上面的流程大概為:

用戶輸入網(wǎng)址進(jìn)入業(yè)務(wù)系統(tǒng)Protected App,系統(tǒng)發(fā)現(xiàn)用戶未登錄,將用戶重定向到單點登錄系統(tǒng)CAS Server,并帶上自身地址service參數(shù)

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

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

SSO系統(tǒng)驗證密碼是否正確,若正確則重定向到業(yè)務(wù)系統(tǒng),并帶上SSO系統(tǒng)的簽發(fā)的ticket

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

之后所有的交互用sessionId與業(yè)務(wù)系統(tǒng)交互即可

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

三、OAuth2.0

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

授權(quán)服務(wù)器當(dāng)然是用來做認(rèn)證的,客戶端就是各個應(yīng)用系統(tǒng),我們只需要登錄成功后拿到用戶信息以及用戶所擁有的權(quán)限即可

用戶在某網(wǎng)站上點擊使用微信授權(quán),這里的某網(wǎng)站就類似業(yè)務(wù)系統(tǒng),微信授權(quán)服務(wù)器就類似單點登錄系統(tǒng)

之后微信授權(quán)服務(wù)器返回一個確認(rèn)授權(quán)頁面,類似登錄界面,這個頁面當(dāng)然是微信的而不是業(yè)務(wù)系統(tǒng)的

用戶確認(rèn)授權(quán),類似填寫了賬號和密碼,提交后微信鑒權(quán)并返回一個ticket,并重定向業(yè)務(wù)系統(tǒng)。

業(yè)務(wù)系統(tǒng)帶上ticket訪問微信服務(wù)器,微信服務(wù)器返回正式的token,業(yè)務(wù)系統(tǒng)就可以使用token獲取用戶信息了

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

授權(quán)碼(authorization-code)

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

隱藏式(implicit)

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

密碼式(password)

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

客戶端憑證(client credentials)

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

簡單流程

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

四、說一下幾個名詞的區(qū)別

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

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

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

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8732

    瀏覽量

    84617
  • SSO
    SSO
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    7479

原文標(biāo)題:SSO 單點登錄和 OAuth2.0 的區(qū)別和理解

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

收藏 人收藏

    評論

    相關(guān)推薦

    HDMI 2.0與HDMI 2.1有什么區(qū)別

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

    HDMI 2.1與HDMI 2.0:深度解析兩者的區(qū)別

    的不斷發(fā)展,HDMI標(biāo)準(zhǔn)也經(jīng)歷了從1.0到2.1的演進(jìn)。本文將重點探討HDMI 2.1與HDMI 2.0之間的主要區(qū)別,幫助讀者更好地理解兩者的差異。 一、帶寬差異 HDMI 2.0
    的頭像 發(fā)表于 07-09 14:40 ?1687次閱讀

    hdmi2.1和2.0的顯著區(qū)別

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

    hdmi線1.4和2.0有啥區(qū)別

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

    格力博與芯盾時代攜手建設(shè)SSO單點登錄系統(tǒng),打破業(yè)務(wù)應(yīng)用之間的壁壘

    隨著我國制造業(yè)數(shù)字化轉(zhuǎn)型持續(xù)深入,身份安全的重要性日益凸顯。
    的頭像 發(fā)表于 04-12 09:43 ?319次閱讀

    單點液位傳感器與多點液位傳感器有哪些不同呢?

    單點液位傳感器和多點液位傳感器的區(qū)別在于第一種是可以一個傳感器檢測一個液位,另外一個則可實現(xiàn)一個傳感器檢測多個液位,以此來適用于不同的應(yīng)用環(huán)境。
    的頭像 發(fā)表于 01-10 16:57 ?886次閱讀
    <b class='flag-5'>單點</b>液位傳感器與多點液位傳感器有哪些不同呢?

    sata3.0和2.0的接口區(qū)別

    稱為SATA III)。本文將比較這兩個接口的區(qū)別。 傳輸速度: SATA 2.0接口的理論最高傳輸速率為3Gb/s(Gigabits per second),也就是每秒傳輸300MB的數(shù)據(jù)。而
    的頭像 發(fā)表于 12-25 15:16 ?1.4w次閱讀

    pd2.0和pd3.0的區(qū)別

    pd2.0和pd3.0的區(qū)別 PD(Power Delivery)是一種新一代的充電技術(shù)標(biāo)準(zhǔn),可以提供更高的功率和更快的充電速度。PD2.0和PD3.0是PD標(biāo)準(zhǔn)的兩個不同版本,在功能和性能方面
    的頭像 發(fā)表于 12-07 15:37 ?1.5w次閱讀

    0歐電阻、電感、磁珠單點接地時有什么區(qū)別

    0歐電阻、電感、磁珠單點接地時有什么區(qū)別? 0歐電阻、電感和磁珠單點接地是電子電路中常見的連接元件。它們在單點接地時具有不同的特性和應(yīng)用。本文將詳細(xì)介紹這三種元件的
    的頭像 發(fā)表于 11-30 15:07 ?744次閱讀

    統(tǒng)一身份認(rèn)證平臺之SSO建設(shè)

    前言 上篇說道Passwordless無密碼技術(shù),也提到了數(shù)字時代密碼管理的難度,其實在日常的生活中,很多用戶也會因為忘記某些網(wǎng)站的登錄密碼而煩惱。為了方便記憶,很多人都在不同的站點使用相同的用戶名
    的頭像 發(fā)表于 11-20 11:41 ?484次閱讀
    統(tǒng)一身份認(rèn)證平臺之<b class='flag-5'>SSO</b>建設(shè)

    如何通過單點接地或者多點接地來消除噪聲?它們有什么區(qū)別?

    如何通過單點接地或者多點接地來消除噪聲?它們有什么區(qū)別? 單點接地和多點接地是兩種常見的方法,用于消除電子設(shè)備和電線系統(tǒng)中的噪聲問題。它們在原理和實施上存在一些區(qū)別。
    的頭像 發(fā)表于 11-09 10:02 ?1132次閱讀

    什么是USB3.0?usb3.0與usb2.0有什么區(qū)別?

    什么是USB3.0?usb3.0與usb2.0有什么區(qū)別 USB3.0是指“超級速度USB”,它是一種高速數(shù)據(jù)傳輸技術(shù),是USB2.0的升級版本。與USB2.0相比,USB3.0具有更
    的頭像 發(fā)表于 10-27 14:31 ?8406次閱讀

    USB3.0和USB2.0工業(yè)連接器究竟有哪些區(qū)別

    CNLINKO凌科電氣連接器知識分享USB3.0和USB2.0工業(yè)連接器是用于USB接口設(shè)備的兩款常用連接器,是數(shù)據(jù)傳輸非常重要的手段。相信很多人對這兩種連接器的區(qū)別都有所知曉,但不一定全面。今天
    的頭像 發(fā)表于 10-21 08:14 ?2074次閱讀
    USB3.0和USB<b class='flag-5'>2.0</b>工業(yè)連接器究竟有哪些<b class='flag-5'>區(qū)別</b>?

    什么是oauth協(xié)議

    本篇文章讓我?guī)阏J(rèn)識一下什么是oauth協(xié)議 什么是 oauth協(xié)議 ? 百度百科上解釋:允許用戶提供一個令牌,而不是用戶名和密碼來訪問他們存放在特定服務(wù)提供者的數(shù)據(jù)。每一個令牌授權(quán)一個特定的網(wǎng)站
    的頭像 發(fā)表于 10-08 11:39 ?1317次閱讀
    什么是<b class='flag-5'>oauth</b>協(xié)議

    一個輕量級的權(quán)限認(rèn)證框架:Sa-Token

    、 單點登錄 、 OAuth2.0 、 分布式Session會話 、 微服務(wù)網(wǎng)關(guān)鑒權(quán) 等一系列權(quán)限相關(guān)問題。 sa-token Sa-Token 功能 Sa
    的頭像 發(fā)表于 09-30 16:46 ?1664次閱讀
    一個輕量級的權(quán)限認(rèn)證框架:Sa-Token