自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Spring Security5.5發(fā)布,正式實(shí)裝OAuth2.0的第五種授權(quán)模式

開發(fā) 架構(gòu)
今天Spring Security 5.5發(fā)布了,主要涉及OAuth2.0和SAML2.0兩個(gè)協(xié)議。

[[400320]]

今天Spring Security 5.5發(fā)布了,主要涉及OAuth2.0和SAML2.0兩個(gè)協(xié)議。其中最大的亮點(diǎn)是支持了OAuth2.0的另一種授權(quán)模式j(luò)wt-bearer。這個(gè)模式可能對(duì)大家比較陌生,說實(shí)話胖哥也沒在實(shí)際開發(fā)中玩過這種模式,不過它并不是剛出的規(guī)范,這是2015年5月起草的RFC7523的一部分,如今正式實(shí)裝到Spring Security中,今天就和大家一起學(xué)習(xí)一下這個(gè)規(guī)范。

JWT Bearer 授權(quán)模式

通常出現(xiàn)在各大技術(shù)社區(qū)的OAuth2.0有四大授權(quán)模式:

授權(quán)碼模式 grant_type=authorization_code。

隱藏模式response_type=token。

密碼模式grant_type=password。

憑據(jù)模式grant_type=client_credentials。

其實(shí)這幾種模式中都會(huì)用到Bearer Token,甚至Token直接選用JWT技術(shù)。那么它作為一種授權(quán)模式是如何定義的呢?

JWT Bearer 授權(quán)

首先jwt-bearer認(rèn)證請(qǐng)求也要攜帶grant_type參數(shù)來表明使用的授權(quán)模式:

  1. grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer 

這個(gè)grant_type有點(diǎn)長(zhǎng)!還要攜帶assertion參數(shù),這個(gè)參數(shù)對(duì)應(yīng)的值只能是一個(gè)JWT,另外也可以攜帶(可選)scope參數(shù)以表明請(qǐng)求的作用域。根據(jù)上面的描述,一個(gè)jwt-bearer類型的授權(quán)模式大致是這樣的:

  1. POST /token/oauth2 HTTP/1.1 
  2.      Host: felord.cn 
  3.      Content-Type: application/x-www-form-urlencoded 
  4.  
  5.      grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer 
  6.      &assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9. 
  7.      eyJzdWIiOiJhbGwiLCJhdWQiOiJGZWxvcmRjbiIsInJv. 
  8.      ER2U4CAt1xYxXBmnVQsrirkMwPwxwjWxjs 

其實(shí)也就是說用戶如果要請(qǐng)求授權(quán)要先有一個(gè)JWT,我個(gè)人估計(jì)有可能是可以被授權(quán)服務(wù)器信任的第三方JWT憑據(jù),憑據(jù)校驗(yàn)通過用戶就可以得到相應(yīng)的授權(quán)去訪問特定的資源。

客戶端身份認(rèn)證

RFC7523還規(guī)定JWT Bearer還可以用于客戶端身份驗(yàn)證??蛻舳藬y帶一個(gè)client_assertion_type參數(shù):

  1. client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer 

同Beaerer JWT授權(quán)類似,還要攜帶一個(gè)client_assertion參數(shù),這個(gè)參數(shù)同樣要帶一個(gè)JWT。請(qǐng)求實(shí)例如下:

  1. POST /token/oauth2 HTTP/1.1 
  2.     Host: felord.cn 
  3.     Content-Type: application/x-www-form-urlencoded 
  4.  
  5.     grant_type=authorization_code& 
  6.     code=n0esc3NRze7LTCu7iYzS6a5acc3f0ogp4& 
  7.     client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3A 
  8.     client-assertion-type%3Ajwt-bearer& 
  9.     client_assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9. 
  10.     eyJzdWIiOiJhbGwiLCJhdWQiOiJGZWxvcmRjbiIsInJv. 
  11.     ER2U4CAt1xYxXBmnVQsrirkMwPwxwjWxjs 

場(chǎng)景

那么場(chǎng)景是什么?根據(jù)RFC723的描述,該模式用于當(dāng)客戶端希望利用一個(gè)現(xiàn)有的、可信任的、使用JWT語義表達(dá)的關(guān)系來獲取Access Token,它不需要在授權(quán)服務(wù)器上直接進(jìn)行用戶批準(zhǔn)(User Approval)步驟。

另外jwt-bearer也被定義用于客戶端身份驗(yàn)證機(jī)制,來判斷客戶端的身份是否合規(guī)??蛻舳耸褂肑WT進(jìn)行身份認(rèn)證和客戶端使用JWT進(jìn)行授權(quán)是分離的行為。當(dāng)然這兩種行為可以組合使用,也可以分離使用??蛻舳耸褂肑WT進(jìn)行身份驗(yàn)證僅是客戶端向令牌端點(diǎn)進(jìn)行身份驗(yàn)證一種替代方法。

個(gè)人感覺就是方便在已經(jīng)有JWT體系上使用OAuth2.0協(xié)議。

總結(jié)

今天主要對(duì)jwt-bearer授權(quán)模式的協(xié)議進(jìn)行了分享,和其它模式比較起來jwt-bearer還很新,雖然目前還沒有大規(guī)模運(yùn)用,不過目前我在國外的技術(shù)社區(qū)已經(jīng)發(fā)現(xiàn)了很多關(guān)于這種模式的問題和討論,看來這個(gè)模式還是有點(diǎn)東西的,需要留意一下。

本文轉(zhuǎn)載自微信公眾號(hào)「碼農(nóng)小胖哥」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系碼農(nóng)小胖哥公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: 碼農(nóng)小胖哥
相關(guān)推薦

2022-09-09 10:15:06

OAuthJava

2025-04-11 05:55:00

2022-03-16 00:07:55

OAuth2授權(quán)框架

2020-07-08 07:45:44

OAuth2.0授權(quán)

2011-09-07 16:24:01

Windows Int

2009-03-30 09:16:16

JBossSOAEclipse

2009-04-01 08:53:34

JavaRebelJVM插件

2009-12-17 08:54:31

MySQL 5.5半同步復(fù)制

2012-02-13 09:47:28

JavaJActor

2011-10-18 15:00:46

Perl

2012-02-16 09:15:48

JavaJActor

2013-02-26 09:36:57

RubyRuby 2.0

2011-07-13 15:09:48

PHP

2021-08-02 06:49:46

OIDC認(rèn)證協(xié)議

2021-08-29 18:36:57

項(xiàng)目

2009-06-19 17:53:51

Spring.NET1

2009-11-30 10:44:37

Debris LinuLinux

2011-03-30 14:29:13

QuartzJava

2012-05-11 10:42:56

JavaErrai

2009-05-20 16:28:47

LinuxMusix2.0 Beta 1
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)