本系列文章Spring Cloud :: Security :: Oauth2 - ? OAuth2模型詳述
寫在前面
Spring Cloud :: Security :: Oauth2 - ① 待定
...文中很多專有名詞在初次使用時我會標注一下中文,但是在后面使用過程中我還是會使用英文來表示,因為所有的標準的出處都是英文,中文的翻譯并沒有標準,用英文會減少歧義通俗易懂。
_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/
背景最近在做基于Spring Cloud的一系列架構,在認證、權限這一塊準備采用OAuth2來做,Spring Cloud本身對于OAuth2的支持很不錯,這一塊叫做Spring Cloud Security,默認就是使用OAuth2的模型來支持。本文把自己做架構過程中積累的技術以及插圖分享出來。
概述 介紹OAuth2模型本文主要描述OAuth2的模型以及基本運行原理,內容略略抽象,盡最大限度用圖來描述,結合后續的基于Spring Cloud的代碼和架構圖理解會更為便捷。
正文 OAuth2我們經常所說的OAuth2,顧名思義,就是OAuth模型的第二版。此版本允許第三方應用獲取資源訪問權限,并且在很多大型互聯網企業中進行使用。
基礎知識 Roles 角色 OAuth2定義的4個角色Resource Owner :資源擁有者,電腦前的你。
Resource Server :資源服務器,托管受保護的數據的服務器。
Client :客戶端,請求訪問資源服務器的應用。可以是網站,可以是javascript腳本,也可以是任何app等。
Authorization Server :授權服務器,向Client(客戶端)發放token(令牌)的服務器,token用于Client請求Resource Server。
佛系圖解釋一下(來源于RFC6749)https://tools.ietf.org/html/r...+--------+ +---------------+ | |--(A)------- Authorization Grant --------->| | | | | | | |<-(B)----------- Access Token -------------| | | | | | | | | | | | +----------+ | | | |--(C)---- Access Token ---->| | | | | | | | | | | |<-(D)- Protected Resource --| Resource | | Authorization | | Client | | Server | | Server | | | | | | | | | | | | | | | | | | | | | +----------+ | | | | | | | | | | | | | | | | | | +--------+ +---------------+
(A):授權
(B):獲得token
(C):使用token訪問Resource Server
(D):獲得受保護的數據
這張圖中沒有Resource Owner出現,我們姑且認為這個過程都是系統自動的,不需要人的參與。
Token 令牌Token(令牌)是Authorization Server生成的一段類似于uuid的隨機字符串,在Client請求的時候生成并返回。
令牌的類型
Access Token : 訪問令牌。允許第三方應用程序使用并訪問用戶的數據。此token由Client作為參數或者請求header發送到Resource Server,并且應具有有限的生命周期,過期時限由Authorization Server決定。
Refresh Token : 刷新令牌。與access token一并生成,但與access token不同的是,它不會在每一個向Resource Server請求數據的時候發送給服務器。僅僅用于服務器過期時發送給服務器來更新access token。
Authorization grant types 授權類型OAuth2定義了4種授權的類型,具體選用哪一種類型取決于不同的場景以及需求。
Authorization Code Grant 授予授權代碼如果Client是Web服務器,那么默認應該使用這種模式,這也是OAuth2默認的方式。這種模式允許Client長期訪問Token,并且刷新Token的續訂,即使用Refresh Token。
例如:
Resource Owner : 你
Resource Server: Google服務器
Client: Facebook網站
Authorization Server:Google服務器
網站希望獲得你的Google個人資料的信息。
你將被Client(網站)重定向到Authorization Server(Google)
如果你授權訪問,Authorization Server會在回調中向Client發送Authorization Code
使用Authorization Code向Authorization Server申請Access Token
Client可以使用Access Token查詢Resource Server并獲取你的個人資料信息。
題外話,http://www.websequencediagram... 真的很棒
『 Legend 』: ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ >=========> : Http POST request. ┃ ┃ <~~~~~~~~~< : Response from server. ┃ ┃ >---------> : Forward or redirect to. ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 『 Sequence Diagram 』: ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━┓ ┏━━━━━━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━┓ ┃Ressource Owner┃ ┃Client┃ ┃Authorization Server┃ ┃Resource Server ┃ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━┛ ┃ ┃ ┃ ┃ ┃ ┃ Authorization Code Request ┏━┓ ┃ ┃ ┃ >===================================> ┃ ┃ ┃ ┃ ┃ +----------------------------------+ ┃ ┃ ┃ | Needs client_id,redirect_uri, | ┃ ┃ | reponse_type=code[,scope,state] | ┃ ┃ Login & Consent +----------------------------------+ ┃ ┃ >===================================================> ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Authorization Code Reponse ┃ ┃ ┃ ┃ ┃ <~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~< ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗━┛ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┏━┓ ┃ ┃ ┃ Exchange Code For Access Token ┃ ┃ ┃ ┃ ┃ >===================================> ┃ ┃ ┃ ┃ ┃ +--------------------------------------------+ ┃ ┃ ┃ | Needs client_id,client_secret,redirect_uri | ┃ ┃ ┃ | grant_type=authorization_code,code | ┃ ┃ ┃ +--------------------------------------------+ ┃ ┃ ┃ Access Token [+ Refresh Token] ┃ ┃ ┃ ┃ ┃ <~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~< ┗━┛ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┏━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃loop┃ ┃ ┃ ┃ ┃ ┃ ┣━━━━╋ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Call API with Access Token ┃ ┏━┓ ┃ ┃ ┃ ┃ >===================================================================> ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Reponse with Data ┃ ┃ ┃ ┃ ┃ ┃ <~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~< ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗━┛ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━┓ ┏━━━━━━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━┓ ┃Ressource Owner┃ ┃Client┃ ┃Authorization Server┃ ┃Resource Server ┃ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━┛Implicit Grant 隱性授權
與Authorization Code Grant的方式不同的是,Client不是一個Web Server,而是嵌入在瀏覽器的腳本語言,比如javascript。
例如:
Resource Owner: 你
Resource Server: Google服務器
Client: 使用Jquery或Angular js的客戶端
Authorization Server: Google服務器
Client的js端希望獲得Google的個人資料信息
你會被重定向到Google的Authorization Server
如果你授權使用自己的Google個人信息資料給Client,則Authorization Server會把Access Token異步回調給js的Client
Client可以使用Access Token查詢Resource Server并獲取你的個人資料信息(通過js的異步調用)。
佛系架構圖『 Legend 』: ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ >=========> : Http POST request. ┃ ┃ <~~~~~~~~~< : Response from server. ┃ ┃ >---------> : Forward or redirect to. ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 『 Sequence Diagram 』: ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━┓ ┃Ressource Owner┃ ┃Client(Javascript App)┃ ┃Authorization Server┃ ┃Resource Server ┃ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━┛ ┃ ┃ ┃ ┃ ┃ ┃ Authorization Token Request ┏━┓ ┃ ┃ ┃ >===================================> ┃ ┃ ┃ ┃ ┃ +----------------------------------+ ┃ ┃ ┃ | Needs client_id,redirect_uri, | ┃ ┃ | reponse_type=token[,scope,state] | ┃ ┃ Login & Consent +----------------------------------+ ┃ ┃ >===================================================> ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Access Token ┃ ┃ ┃ ┃ ┃ <~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~< ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗━┛ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┏━┓ ┃ ┃ ┃ Access Token Info Request ┃ ┃ ┃ ┃ ┃ >===================================> ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Access Token Info ┃ ┃ ┃ ┃ ┃ <~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~< ┗━┛ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┏━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃loop┃ ┃ ┃ ┃ ┃ ┃ ┣━━━━╋ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Call API with Access Token ┃ ┏━┓ ┃ ┃ ┃ ┃ >===================================================================> ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +-----------------------------+ ┃ ┃ ┃ ┃ ┃ | Implement CORS For Cross | ┃ ┃ ┃ ┃ ┃ | Domain Requests | ┃ ┃ ┃ ┃ ┃ +-----------------------------+ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Reponse with Data ┃ ┃ ┃ ┃ ┃ ┃ <~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~< ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗━┛ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━┓ ┃Ressource Owner┃ ┃Client(Javascript App)┃ ┃Authorization Server┃ ┃Resource Server ┃ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━┛Resource Owner Password Credentials 授予資源擁有者密碼憑證
利用這種方式,你的憑證,一般來講就是密碼,會先發送給Client,然后通過Client發送給Authorization Server。通過這種方式可以看出,Client與Authorization Server之間應該有著絕對的信任,一般情況下,Client與Authorization Server是同等權限體系的,換句話說,應該是client.example.com與auth.example.com相同網站的不同resource級別的關系,由于用戶的密碼都是屬于example.com體系下的,所以在client.example.com或者任何xxx.example.com中輸入密碼,去resource.example.com獲取數據都是可以接受的。
例如:
Resource Owner: 你
Resource Server:resource.example.com服務器
Client: new.example.com的服務器,需要調用自己網站的認證系統
Authorization Server: auth.example.com服務器
example公司開發了新的new.example.com的子系統
調用自己公司的auth.example.com認證
認證成功后從Authorization Server獲取Access Token
利用Access Token去調用自己的resource.example.com的api獲取相應數據
佛系架構圖『 Legend 』: ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ >=========> : Http POST request. ┃ ┃ <~~~~~~~~~< : Response from server. ┃ ┃ >---------> : Forward or redirect to. ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 『 Sequence Diagram 』: ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━┓ ┏━━━━━━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━┓ ┃Ressource Owner┃ ┃Client ┃ ┃Authorization Server┃ ┃Resource Server ┃ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━┛ ┃ Authorization ┃ ┃ ┃ ┃>================>┃ ┃ ┃ ┃ with Credentials ┃ ┃ ┃ ┃ ┃ Access Token Request ┏━┓ ┃ ┃ ┃ >===================================> ┃ ┃ ┃ ┃ ┃ +-------------------------------------+ ┃ ┃ ┃ | Needs client_id,redirect_uri, | ┃ ┃ | reponse_type=password[,scope,state] | ┃ ┃ Login & Consent +-------------------------------------+ ┃ ┃ >======================================================> ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Access Token ┃ ┃ ┃ ┃ ┃ <~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~< ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗━┛ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┏━┓ ┃ ┃ ┃ Access Token Info Request ┃ ┃ ┃ ┃ ┃ >===================================> ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Access Token Info ┃ ┃ ┃ ┃ ┃ <~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~< ┗━┛ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┏━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃loop┃ ┃ ┃ ┃ ┃ ┃ ┣━━━━╋ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Call API with Access Token ┃ ┏━┓ ┃ ┃ ┃ ┃ >===================================================================> ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Reponse with Data ┃ ┃ ┃ ┃ ┃ ┃ <~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~< ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗━┛ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┃ ┃ ┃ ┃ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━┓ ┏━━━━━━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━┓ ┃Ressource Owner┃ ┃Client ┃ ┃Authorization Server┃ ┃Resource Server ┃ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━┛Client Credentials Grant 授權客戶憑證
當Client自身是Resource Owner的場合,這時只需要認證client_id即可,本身不產生其他的授權認證。
例如:
Resource Owner: 任何一家網站
Resource Server:Google服務器
Client: =Resource Owner
Authorization Server: Google服務器
網站A保存自己的所有files在Google的云存儲服務器
網站A需要通過Google Api進行files的操作,操作前必須在Authorization Server中認證
一旦認證成功,網站A獲取Access Token來訪問Google的Resource Server
Authorization Server不會授權其他的權限給Resource Owner
佛系架構圖『 Legend 』: ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ >=========> : Http POST request. ┃ ┃ <~~~~~~~~~< : Response from server. ┃ ┃ >---------> : Forward or redirect to. ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 『 Sequence Diagram 』: ┏━━━━━━━━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━┓ ┃Client(Resource Owner)┃ ┃Authorization Server┃ ┃Resource Server ┃ ┗━━━━━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━┛ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Access Token Request ┏━┓ ┃ ┃>=======================================================> ┃ ┃ ┃ ┃ +-----------------------------------------------+ ┃ ┃ | Needs client_id,redirect_uri, | ┃ ┃ | reponse_type=client_credentials[,scope,state] | ┃ ┃ +-----------------------------------------------+ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Access Token ┃ ┃ ┃ ┃<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~< ┃ ┃ ┃ ┃ ┗━┛ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┏━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃loop┃ ┃ ┃ ┃ ┃ ┣━━━━╋ ┃ ┃ ┃ ┃ ┃ ┃ Call API with Access Token ┃ ┏━┓ ┃ ┃ ┃ >=====================================================================================> ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Reponse with Data ┃ ┃ ┃ ┃ ┃ <~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~< ┃ ┃ ┃ ┃ ┃ ┃ ┗━┛ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┃ ┃ ┃ ┏━━━━━━━━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━┓ ┃Client(Resource Owner)┃ ┃Authorization Server┃ ┃Resource Server ┃ ┗━━━━━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━┛
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71604.html
摘要:源碼非常簡單談談實現的問題當請求上線文沒有如果調用會直接,這個肯定會報錯,因為上下文失敗如果設置線程隔離,這里也會報錯。導致安全上下問題傳遞不到子線程中。歡迎關注我們獲得更多的好玩實踐 背景分析 showImg(https://segmentfault.com/img/remote/1460000018899024?w=494&h=245); 1.客戶端攜帶認證中心發放的token,...
摘要:前言基于做微服務架構分布式系統時,作為認證的業內標準,也提供了全套的解決方案來支持在環境下使用,提供了開箱即用的組件。 前言 基于SpringCloud做微服務架構分布式系統時,OAuth2.0作為認證的業內標準,Spring Security OAuth2也提供了全套的解決方案來支持在Spring Cloud/Spring Boot環境下使用OAuth2.0,提供了開箱即用的組件。但...
摘要:服務器將要監聽的端口不要使用服務進行注冊不要在本地緩存注冊表信息使用一個新的注解,就可以讓我們的服務成為一個服務服務發現客戶端配置以為例需要做件事情成為服務發現的客戶端配置對應來說我們只需要配置如下啟動運行查看。 Spring簡介 為什么要使用微服務 單體應用: 目前為止絕大部分的web應用軟件采用單體應用,所有的應用的用戶UI、業務邏輯、數據庫訪問都打包在一個應用程序上。 showI...
閱讀 2031·2023-04-25 15:24
閱讀 1574·2019-08-30 12:55
閱讀 1614·2019-08-29 15:27
閱讀 469·2019-08-26 17:04
閱讀 2406·2019-08-26 10:59
閱讀 1796·2019-08-26 10:44
閱讀 2192·2019-08-22 16:15
閱讀 2586·2019-08-22 15:36