国产污丝袜在线观看_最新日韩国产在线_国产三级无码AV在线网址_国产高潮流白浆喷水免_欧美精品观看视频免费_伊人春色在线观看_国产精品40熟女一区二区_被夫好友强迫人妻中文_可以免费观看的黄页_一本中文字幕在线无码

> 企業(yè)資訊 > 公司動(dòng)態(tài)

OAuth2原來(lái)這樣用

發(fā)布時(shí)間:2023-01-16 作者:慧安股份 來(lái)源:慧安股份

一、理論

1、OAuth2介紹

       OAuth(開(kāi)放授權(quán))是一個(gè)開(kāi)放標(biāo)準(zhǔn),允許用戶(hù)授權(quán)第三方移動(dòng)應(yīng)用訪問(wèn)他們存儲(chǔ)在另外的服務(wù)提供者上的信息,而不需要將用戶(hù)名和密碼提供給第三方移動(dòng)應(yīng)用或分享他們數(shù)據(jù)的所有內(nèi)容,OAuth2.0是OAuth協(xié)議的延續(xù)版本,但不向后兼容OAuth 1.0即完全廢止了OAuth1.0。

2、OAuth2角色

OAuth2的標(biāo)準(zhǔn)定義了以下幾種角色:

       客戶(hù)端(Client):客戶(hù)端即代表意圖訪問(wèn)受限資源的第三方應(yīng)用。在訪問(wèn)實(shí)現(xiàn)之前,它必須先經(jīng)過(guò)用戶(hù)者授權(quán),并且獲得的授權(quán)憑證將進(jìn)一步由授權(quán)服務(wù)器進(jìn)行驗(yàn)證。

       資源擁有者(Resource Owner):資源擁有者即代表授權(quán)客戶(hù)端訪問(wèn)本身資源信息的用戶(hù),也就是應(yīng)用場(chǎng)景中的“開(kāi)發(fā)者A”。客戶(hù)端訪問(wèn)用戶(hù)帳戶(hù)的權(quán)限僅限于用戶(hù)授權(quán)的“范圍”(aka. scope,例如讀取或?qū)懭霗?quán)限)。

       認(rèn)證服務(wù)器(Authorization Server):認(rèn)證服務(wù)器驗(yàn)證用戶(hù)身份然后為客戶(hù)端派發(fā)資源訪問(wèn)令牌,即給客戶(hù)端校驗(yàn)授權(quán)碼和頒發(fā) token ;

       資源服務(wù)器(Resource Server):資源服務(wù)器托管了受保護(hù)的用戶(hù)賬號(hào)信息。

3、OAuth2認(rèn)證流程

如圖是OAuth2的認(rèn)證流程圖:

(1)、客戶(hù)端向資源擁有者發(fā)起授權(quán)請(qǐng)求(輸入自己的社交賬號(hào)密碼)。

(2)、資源擁有者確認(rèn)客戶(hù)端的授權(quán),返回授權(quán)碼。

(3)、客戶(hù)端拿到授權(quán)碼向認(rèn)證服務(wù)器換取令牌token。

(4)、認(rèn)證服務(wù)器對(duì)授權(quán)碼進(jìn)行身份校驗(yàn),通過(guò)后發(fā)放令牌給客戶(hù)端(授權(quán)碼只能使用一次)。

(5)、客戶(hù)端拿著令牌token去請(qǐng)求資源服務(wù)器。

(6)、資源服務(wù)器檢驗(yàn)令牌token是否有效,有效返回客戶(hù)端用戶(hù)信息。

 

二、模式

OAuth2的標(biāo)準(zhǔn)定義了以下四種授權(quán)模式;

1、授權(quán)碼模式

       我們上面講的內(nèi)容是基于授權(quán)碼模式,指的是在第三方應(yīng)用中先申請(qǐng)一個(gè)授權(quán)碼,然后用該授權(quán)碼獲取令牌。它被稱(chēng)為最安全的一種模式之一,因?yàn)楂@取令牌的操作是在兩個(gè)服務(wù)端進(jìn)行的,減少token泄露的風(fēng)險(xiǎn)。

       官網(wǎng)流程圖:

從調(diào)接口方面,簡(jiǎn)單來(lái)說(shuō):

第一步:獲取code:

eg:oauthServer+"/oauth/authorize?

client_id="+clientId+"&response_type=code&redirect_uri="+redirectUrl+"&scope=all"

如果沒(méi)有登錄,則會(huì)跳轉(zhuǎn)到統(tǒng)一身份認(rèn)證登錄頁(yè)面。如果用戶(hù)登錄了,調(diào)用接口后,會(huì)重定向到

redirect_uri,授權(quán)碼會(huì)作為它的參數(shù)

第二步:獲取access_token

eg: oauthServer+"/oauth/token?code="+code+"&grant_type=authorization_code&client_secret="+clientSecret+"&redirect_uri="+redirectUri+"&client_id="+clientId

 

{

"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1ODk1MzQ5NzMsInVzZXJfbmFtZS

"token_type": "bearer",

"expires_in": 59,

"scope": "all",

"user_name": "nicky",

"jti": "f2343d44-a85b-428f-9a5e-b51850053988"

}

 

第三步:訪問(wèn)系統(tǒng)資源,此時(shí)統(tǒng)一認(rèn)證服務(wù)會(huì)根據(jù)該認(rèn)證客戶(hù)端權(quán)限信息判斷,決定是否返回信

息。

 

訪問(wèn):http://localhost:8080/api/userinfo?access_token=${accept_token}

 

2、簡(jiǎn)化模式

       簡(jiǎn)化模式是對(duì)授權(quán)碼模式進(jìn)行的簡(jiǎn)化,直接跳過(guò)獲取授權(quán)碼的步驟,直接在瀏覽器中向認(rèn)證服務(wù)器申請(qǐng)令牌。

從調(diào)接口方面,簡(jiǎn)單來(lái)說(shuō):

第一步:訪問(wèn)授權(quán),要傳client_id:客戶(hù)端id,redirect_uri:重定向uri,response_type為token,

scope是授權(quán)范圍,state是其它自定義參數(shù)

http://localhost:8888/oauth/authorize?client_id=cms&redirect_uri=http://localhost:8084/callback&response_type=token&scope=read&state=123

 

第二步:授權(quán)通過(guò),會(huì)重定向到redirect_uri,access_token碼會(huì)作為它的參數(shù)

http://localhost:8084/callback#access_token=${accept_token}&token_type=bearer&state=123&expires_in=120

 

第三步:拿到acceptToken之后,就可以直接訪問(wèn)資源

http://localhost:8084/api/userinfo?access_token=${accept_token}

 

3、密碼模式

密碼模式中,用戶(hù)需要將賬戶(hù)和密碼提供給客戶(hù)端向認(rèn)證服務(wù)器申請(qǐng)令牌,所以該種模式需要用戶(hù)高度

信任客戶(hù)端。

從調(diào)接口方面,簡(jiǎn)單來(lái)說(shuō):

第一步:直接傳username,password獲取token

http://localhost:8888/oauth/token?client_id=cms&client_secret=secret&username=admin&password=123456&grant_type=password&scope=all

第二步:拿到acceptToken之后,就可以直接訪問(wèn)資源

http://localhost:8084/api/userinfo?access_token=${accept_token}

 

4、客戶(hù)端模式

客戶(hù)端模式適用于沒(méi)有前端的命令行應(yīng)用,即在命令行下請(qǐng)求令牌

從調(diào)接口方面,簡(jiǎn)單來(lái)說(shuō):

第一步:獲取token

http://localhost:8888/oauth/token?client_id=cms&client_secret=123&grant_type=client_credentials&scope=all

第二步:拿到acceptToken之后,就可以直接訪問(wèn)資源

http://localhost:8084/api/userinfo?access_token=${accept_token}

 

三、實(shí)戰(zhàn)

       OAuth2在慧安蜂巢物聯(lián)網(wǎng)操作系統(tǒng)平臺(tái)中的應(yīng)用,采用的是讓用戶(hù)在系統(tǒng)管理員中自行配置的方式,目前系統(tǒng)適配Github,我們使用Github為案例。

1、Github配置OAuth2

(1)、登錄github賬號(hào),右上角個(gè)人中心選擇Settings -> develop Settings -> OAuth Apps -> New OAuthApp

(2)、Application name 自定義名稱(chēng);Home URL 項(xiàng)目地址;Authorization callback URL 回調(diào)地址,項(xiàng)目 ip+ /login/oauth2/code/;

點(diǎn)擊確定,如圖

(3)、選擇Generate a new client secret 創(chuàng)建密鑰,記錄ClientId和Client Secrests,保存。

2、慧安蜂巢配置OAuth2

(1)、登錄系統(tǒng)管理員賬戶(hù) ->系統(tǒng)配置 -> OAuth2 -> 啟動(dòng)OAuth2 -> 添加

       協(xié)議按著部署的網(wǎng)絡(luò)協(xié)議選擇http還是https,重定向URL模板就是GitHub上配置得回調(diào)地址,供應(yīng)商選擇Github,用戶(hù)組端ID和用戶(hù)組機(jī)密為上一步github中得ClientId和Client Secrests,保存。

(2)、退出登錄,首頁(yè)就能看到使用Github登錄得入口啦,點(diǎn)擊使用Github登錄,輸入你的Github賬戶(hù)密碼即可登錄

 

四、總結(jié)

       本文從理論、認(rèn)證流程出發(fā),對(duì)OAuth2進(jìn)行了相關(guān)講解,給大家?guī)?lái)初步得認(rèn)識(shí),并且給大家講解了授權(quán)碼模式、簡(jiǎn)化模式、密碼模式、客戶(hù)端模式,我們慧安蜂巢物聯(lián)網(wǎng)操作系統(tǒng)平臺(tái)的OAuth2就是基于授權(quán)碼模式進(jìn)行開(kāi)發(fā)的,并且實(shí)戰(zhàn)接入Github教大家如何使用慧安蜂巢物聯(lián)網(wǎng)操作系統(tǒng)平臺(tái)的OAuth2應(yīng)用。