国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JWT和OAuth2.0

這篇具有很好參考價(jià)值的文章主要介紹了JWT和OAuth2.0。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

JWT和OAuth2.0沒(méi)有可比性,是兩個(gè)完全不同的東西。

JWT是一種認(rèn)證協(xié)議,提供了一種用于發(fā)布接入令牌(Access Token),并對(duì)發(fā)布的簽名接入令牌進(jìn)行驗(yàn)證的方法。SSO私鑰加密token。應(yīng)用端公鑰解密token,

OAuth2.0是一種授權(quán)框架,提供了一套詳細(xì)的授權(quán)機(jī)制(指導(dǎo))。用戶或應(yīng)用可以通過(guò)公開(kāi)的或私有的設(shè)置,授權(quán)第三方應(yīng)用訪問(wèn)特定資源。

一、JWT

1、JWT格式

一個(gè)JWT包含3個(gè)部分:

頭部Header:可存放簽名的類型

數(shù)據(jù)Payload:可存放用戶數(shù)據(jù)和有效期,Payload的內(nèi)容在接收者端是通過(guò)簽名(Signature)來(lái)校驗(yàn)的。

簽名Signature:使用密鑰對(duì)Header和Payload數(shù)據(jù)進(jìn)行加密生成簽名。

JWT為了便于http傳輸,3個(gè)部分需再進(jìn)行Base64Url編碼后用.進(jìn)行關(guān)聯(lián),格式如下:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

JWT真正的好處是讓頒發(fā)JWT token的認(rèn)證服務(wù)器和校驗(yàn)JWT token的應(yīng)用服務(wù)器可以完全分開(kāi)。

那簽名是如何完成認(rèn)證功能的呢,且看:

  1. 用戶向認(rèn)證服務(wù)器提交用戶名和密碼,認(rèn)證服務(wù)器也可以和應(yīng)用服務(wù)器部署在一起,但往往是獨(dú)立的居多;
  2. 認(rèn)證服務(wù)器校驗(yàn)用戶名和密碼組合,然后創(chuàng)建一個(gè)JWT token,token的Payload里面包含用戶的身份信息,以及過(guò)期時(shí)間戳;
  3. 認(rèn)證服務(wù)器使用密鑰對(duì)Header和Payload進(jìn)行簽名,然后發(fā)送給客戶瀏覽器;
  4. 瀏覽器獲取到經(jīng)過(guò)簽名的JWT token,然后在之后的每個(gè)HTTP請(qǐng)求中附帶著發(fā)送給應(yīng)用服務(wù)器。經(jīng)過(guò)簽名的JWT就像一個(gè)臨時(shí)的用戶憑證,代替了用戶名和密碼組合,之后都是JWT token和應(yīng)用服務(wù)器打交道了;
  5. 應(yīng)用服務(wù)器檢查JWT簽名,確認(rèn)Payload確實(shí)是由密鑰擁有者簽過(guò)名的;
  6. Payload身份信息代表了某個(gè)用戶;
  7. 只有認(rèn)證服務(wù)器擁有私鑰,并且認(rèn)證服務(wù)器只把token發(fā)給提供了正確密碼的用戶;
  8. 因此應(yīng)用服務(wù)器可以認(rèn)為這個(gè)token是由認(rèn)證服務(wù)器頒發(fā)的也是安全的,因?yàn)樵撚脩艟哂辛苏_的密碼;
  9. 應(yīng)用服務(wù)器繼續(xù)完成HTTP請(qǐng)求,并認(rèn)為這些請(qǐng)求確實(shí)屬于這個(gè)用戶;

2、簽名和驗(yàn)簽

對(duì)于JWT,簽名方式有很多種,這里我們主要了解HS256和RS256。

HS256

HS256 使用同一個(gè)「secret_key」進(jìn)行簽名與驗(yàn)證(對(duì)稱加密)。一旦 secret_key 泄漏,就毫無(wú)安全性可言了。

  • 如何使用哈希函數(shù)生成簽名?

我們拿到Header、Payload外,還要加上一個(gè)密碼,將這三個(gè)輸入值一起哈希。輸出結(jié)果是一個(gè)SHA-256 HMAC或者基于哈希的MAC。如果需要重復(fù)生成,則需要同時(shí)擁有Header、Payload和密碼才可以。這也意味著,哈希函數(shù)的輸出結(jié)果是一個(gè)數(shù)字簽名,因?yàn)檩敵鼋Y(jié)果就表示了Payload是由擁有密碼的角色生成并加簽了的,沒(méi)有其它方式可以生成這樣的輸出值了。

  • 如何校驗(yàn)JWT簽名?

當(dāng)我們的服務(wù)接收到HS256簽名的JWT時(shí),我們需要使用同樣的密碼才能校驗(yàn)并確認(rèn)token里面的Payload是否有效。為了驗(yàn)證簽名,我們只需要將JWT Header和Payload以及密碼通過(guò)哈希函數(shù)生成結(jié)果。JWT的接收者需要拿到和發(fā)送者一樣的密碼值。如果我們得到的哈希結(jié)果和JWT第三部分的簽名值是一致的,則說(shuō)明有效,可以確認(rèn)發(fā)送者確實(shí)和接收者擁有相同的密碼值。

  • 公式如下:

簽名Signature=Header+Payload+一個(gè)密碼 進(jìn)行SHA-256哈希;再進(jìn)行Base64Url編碼(主要方便url上傳輸)。

驗(yàn)簽: Header+Payload+一個(gè)密碼 進(jìn)行SHA-256哈希;和JWT的簽名Signature對(duì)比。

RS256

RS256 是使用 RSA 私鑰進(jìn)行簽名,使用 RSA 公鑰進(jìn)行驗(yàn)證。相比HS256更加安全。

使用RS256我們同樣需要生成一個(gè)MAC,其目的仍然是創(chuàng)建一個(gè)數(shù)字簽名來(lái)證明一個(gè)JWT的有效性。只是在這種簽名方式中,我們將創(chuàng)建token和校驗(yàn)token的能力分開(kāi),只有認(rèn)證服務(wù)器具備創(chuàng)建的能力,而應(yīng)用服務(wù)器,具備校驗(yàn)的能力。

這樣,我們需要?jiǎng)?chuàng)建兩個(gè)密鑰而不是一個(gè):

仍然需要一個(gè)私鑰,不過(guò)這次它只能被認(rèn)證服務(wù)器擁有,只用來(lái)簽名JWT。
私鑰只能用來(lái)簽名JWT,不能用來(lái)校驗(yàn)它。
第二個(gè)密鑰叫做公鑰(public key),是應(yīng)用服務(wù)器使用來(lái)校驗(yàn)JWT。
公鑰可以用來(lái)校驗(yàn)JWT,但不能用來(lái)給JWT簽名。
公鑰一般不需要嚴(yán)密保管,因?yàn)榧幢愫诳湍玫搅?,也無(wú)法使用它來(lái)偽造簽名。

  • 公式如下:

簽名Signature=Header+Payload 進(jìn)行SHA-256哈希,再使用私鑰對(duì)哈希值進(jìn)行簽名;再進(jìn)行Base64Url編碼(主要方便url上傳輸)。

驗(yàn)簽: Header+Payload進(jìn)行SHA-256哈希;使用公鑰簽名Signature進(jìn)行解密,解密后的值和前面哈希值對(duì)比。

RSA的兩點(diǎn)基本原理
  1. 私鑰加密,持有私鑰或公鑰才可以解密
  2. 公鑰加密,持有私鑰才可解密
RSA公鑰、私鑰加密的使用場(chǎng)景

公鑰和私鑰都可以用于加解密操作,用公鑰加密的數(shù)據(jù)只能由對(duì)應(yīng)的私鑰解密,反之亦然。雖說(shuō)兩者都可用于加密,但是不同場(chǎng)景使用不同的密鑰來(lái)加密,規(guī)則如下:

1、私鑰用于簽名、公鑰用于驗(yàn)簽

簽名和加密作用不同,簽名并不是為了保密,而是為了保證這個(gè)簽名是由特定的某個(gè)人簽名的,而不是被其它人偽造的簽名,所以私鑰的私有性就適合用在簽名用途上。

私鑰簽名后,只能由對(duì)應(yīng)的公鑰解密,公鑰又是公開(kāi)的(很多人可持有),所以這些人拿著公鑰來(lái)解密,解密成功后就能判斷出是持有私鑰的人做的簽名,驗(yàn)證了身份合法性。

2、公鑰用于加密、私鑰用于解密,這才能起到加密作用

因?yàn)楣€是公開(kāi)的,很多人可以持有公鑰。若用私鑰加密,那所有持有公鑰的人都可以進(jìn)行解密,這是不安全的!

若用公鑰加密,那只能由私鑰解密,而私鑰是私有不公開(kāi)的,只能由特定的私鑰持有人解密,保證的數(shù)據(jù)的安全性。

二、OAuth2.0

OAuth2 有4種授權(quán)模式, 其中的access code授權(quán)碼模式在實(shí)現(xiàn)時(shí)可以使用JWT生成code, 也可以不用. 它們之間沒(méi)有必然的聯(lián)系;

  • 示例1:QQ音樂(lè)使用微信登錄
    JWT和OAuth2.0

  • 示例2:口碑使用支付寶登錄
    JWT和OAuth2.0文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-415586.html

三、應(yīng)用場(chǎng)景

  1. OAuth2用在使用第三方賬號(hào)登錄的情況(比如使用weibo, qq, github登錄某個(gè)app)
  2. JWT是用在前后端分離, 需要簡(jiǎn)單的對(duì)后臺(tái)API進(jìn)行保護(hù)時(shí)使用.(前后端分離無(wú)session, 頻繁傳用戶密碼不安全)

到了這里,關(guān)于JWT和OAuth2.0的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 權(quán)限管理 springboot集成springSecurity Oauth2 JWT

    權(quán)限管理 springboot集成springSecurity Oauth2 JWT

    目錄 一、SpringSeurity的基礎(chǔ)操作 1、引入主要依賴 2、加密器 3、實(shí)現(xiàn)自定義登錄邏輯 4、訪問(wèn)限制 5、自定義異常處理? 6、通過(guò)注解的方式配置訪問(wèn)控制 二、Auth2認(rèn)證方案 1、什么是Auth2認(rèn)證 2、Oauth2最常用的授權(quán)模式? 3、依賴引入 4、添加配置類 5、測(cè)試 6、存在到Redis里,后續(xù)

    2023年04月14日
    瀏覽(27)
  • Go語(yǔ)言的API安全: OAuth2與JWT

    在當(dāng)今的互聯(lián)網(wǎng)時(shí)代,API(應(yīng)用程序接口)已經(jīng)成為了應(yīng)用程序之間的通信和數(shù)據(jù)共享的重要工具。然而,API安全也是一個(gè)重要的問(wèn)題,因?yàn)椴话踩腁PI可能導(dǎo)致數(shù)據(jù)泄露、偽造和其他安全風(fēng)險(xiǎn)。為了解決這個(gè)問(wèn)題,我們需要一種安全的方法來(lái)保護(hù)API,這就是OAuth2和JWT(JSON Web

    2024年03月12日
    瀏覽(20)
  • Spring Gateway + Oauth2 + Jwt網(wǎng)關(guān)統(tǒng)一鑒權(quán)

    Spring Gateway + Oauth2 + Jwt網(wǎng)關(guān)統(tǒng)一鑒權(quán)

    之前文章里說(shuō)過(guò),分布式系統(tǒng)的鑒權(quán)有兩種方式,一是在網(wǎng)關(guān)進(jìn)行統(tǒng)一的鑒權(quán)操作,二是在各個(gè)微服務(wù)里單獨(dú)鑒權(quán)。 第二種方式比較常見(jiàn),代碼網(wǎng)上也是很多。今天主要是說(shuō)第一種方式。 重要前提:需要收集各個(gè)接口的uri路徑和所需權(quán)限列表的對(duì)應(yīng)關(guān)系,并存入緩存。 服務(wù)

    2024年02月03日
    瀏覽(24)
  • 微服務(wù)統(tǒng)一認(rèn)證方案Spring Cloud OAuth2+JWT

    微服務(wù)統(tǒng)一認(rèn)證方案Spring Cloud OAuth2+JWT

    目錄 前言 一、微服務(wù)架構(gòu)下的統(tǒng)一認(rèn)證場(chǎng)景 二、微服務(wù)架構(gòu)下的統(tǒng)一認(rèn)證思路 1.基于Session的認(rèn)證方式 2.基于token的認(rèn)證方式(主流) 三、OAuth2開(kāi)放授權(quán)協(xié)議/標(biāo)準(zhǔn) 1.OAuth2介紹 2.OAuth2協(xié)議角色和流程 3.什么情況下需要使用OAuth2? 4.OAuth2的頒發(fā)Token授權(quán)方式 四、Spring Cloud OAuth2+JWT實(shí)現(xiàn)

    2023年04月09日
    瀏覽(23)
  • JWT VS OAuth2, 如何設(shè)計(jì)一個(gè)安全的API接口?

    JWT VS OAuth2, 如何設(shè)計(jì)一個(gè)安全的API接口?

    Client Profile客戶端描述 OAuth2框架也指定了集中客戶端描述,用來(lái)表示應(yīng)用程序的類型: Web應(yīng)用 用戶代理 原聲應(yīng)用 Authorization Grants認(rèn)證授權(quán) 認(rèn)證授權(quán)代表資源擁有者授權(quán)給客戶端應(yīng)用程序的一組權(quán)限,可以是下邊幾種形式: 授權(quán)碼 隱式授權(quán) 資源擁有者密碼證書(shū) 客戶端證書(shū)

    2024年04月11日
    瀏覽(19)
  • Gateway+Springsecurity+OAuth2.0+JWT 實(shí)現(xiàn)分布式統(tǒng)一認(rèn)證授權(quán)!

    Gateway+Springsecurity+OAuth2.0+JWT 實(shí)現(xiàn)分布式統(tǒng)一認(rèn)證授權(quán)!

    目錄 1. OAuth2.0授權(quán)服務(wù) 2. 資源服務(wù) 3. Gateway網(wǎng)關(guān) 4. 測(cè)試 ? 在SpringSecurity+OAuth2.0 搭建認(rèn)證中心和資源服務(wù)中心-CSDN博客??????? 基礎(chǔ)上整合網(wǎng)關(guān)和JWT實(shí)現(xiàn)分布式統(tǒng)一認(rèn)證授權(quán)。 ? 大致流程如下: 1、客戶端發(fā)出請(qǐng)求給網(wǎng)關(guān)獲取令牌 2、網(wǎng)關(guān)收到請(qǐng)求,直接轉(zhuǎn)發(fā)給授權(quán)服務(wù)

    2024年01月24日
    瀏覽(20)
  • 權(quán)限認(rèn)證SpringCloud GateWay、SpringSecurity、OAuth2.0、JWT一網(wǎng)打盡!

    權(quán)限認(rèn)證SpringCloud GateWay、SpringSecurity、OAuth2.0、JWT一網(wǎng)打盡!

    1.它是如何工作的? ? 客戶端向 Spring Cloud Gateway 發(fā)出請(qǐng)求。如果Gateway處理程序映射確定一個(gè)請(qǐng)求與路由相匹配,它將被發(fā)送到Gateway Web處理程序。這個(gè)處理程序通過(guò)一個(gè)特定于該請(qǐng)求的過(guò)濾器鏈來(lái)運(yùn)行該請(qǐng)求。過(guò)濾器被虛線分割的原因是,過(guò)濾器可以在代理請(qǐng)求發(fā)送之前和

    2024年04月08日
    瀏覽(23)
  • SpringSecurity(二十四)--OAuth2:使用JWT和加密簽名(下)非對(duì)稱密鑰加密

    SpringSecurity(二十四)--OAuth2:使用JWT和加密簽名(下)非對(duì)稱密鑰加密

    由于上文對(duì)稱密鑰涉及到的內(nèi)容比較多,所以這一節(jié)的非對(duì)稱密鑰加密拆開(kāi)成這一節(jié)單獨(dú)講解。 所以大家盡量先閱讀完上一章的內(nèi)容后再瀏覽這一章內(nèi)容會(huì)更好。 本節(jié)將實(shí)現(xiàn)OAuth2身份驗(yàn)證的一個(gè)示例,其中授權(quán)服務(wù)器和資源服務(wù)器會(huì)使用一個(gè)非對(duì)稱密鑰對(duì)來(lái)對(duì)令牌簽名和驗(yàn)

    2024年02月16日
    瀏覽(17)
  • Spring Security OAuth 2.0 資源服務(wù)器— JWT

    Spring Security OAuth 2.0 資源服務(wù)器— JWT

    目錄 一、JWT的最小依賴 二、JWT的最基本配置 1、指定授權(quán)服務(wù)器 2、初始預(yù)期(Startup Expectations) 3、運(yùn)行時(shí)預(yù)期(Runtime Expectations) 三、JWT認(rèn)證是如何工作的 四、直接指定授權(quán)服務(wù)器 JWK Set Uri 五、提供 audiences 六、覆蓋或取代啟動(dòng)自動(dòng)配置 1、使用jwkSetUri() 2、使用decoder()

    2024年02月05日
    瀏覽(15)
  • SpringSecurity學(xué)習(xí)(八)OAuth2.0、授權(quán)服務(wù)器、資源服務(wù)器、JWT令牌的使用

    SpringSecurity學(xué)習(xí)(八)OAuth2.0、授權(quán)服務(wù)器、資源服務(wù)器、JWT令牌的使用

    OAuth2是一個(gè)認(rèn)證協(xié)議,SpringSecurity對(duì)OAuth2協(xié)議提供了響應(yīng)的支持,開(kāi)發(fā)者可以非常方便的使用OAuth2協(xié)議。 簡(jiǎn)介 四種授權(quán)模式 Spring Security OAuth2 GitHub授權(quán)登錄 授權(quán)服務(wù)器與資源服務(wù)器 使用JWT OAuth是一個(gè)開(kāi)放標(biāo)準(zhǔn),允許用戶讓第三方應(yīng)用訪問(wèn)該用戶在某一網(wǎng)站上存儲(chǔ)的私密資源

    2024年02月02日
    瀏覽(36)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包