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

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

OAuth2原來這樣用

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

一、理論

1、OAuth2介紹

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

2、OAuth2角色

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

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

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

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

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

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

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

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

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

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

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

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

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

 

二、模式

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

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

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

       官網(wǎng)流程圖:

從調(diào)接口方面,簡單來說:

第一步:獲取code:

eg:oauthServer+"/oauth/authorize?

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

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

redirect_uri,授權(quán)碼會作為它的參數(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"

}

 

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

息。

 

訪問:http://localhost:8080/api/userinfo?access_token=${accept_token}

 

2、簡化模式

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

從調(diào)接口方面,簡單來說:

第一步:訪問授權(quán),要傳client_id:客戶端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)通過,會重定向到redirect_uri,access_token碼會作為它的參數(shù)

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

 

第三步:拿到acceptToken之后,就可以直接訪問資源

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

 

3、密碼模式

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

信任客戶端。

從調(diào)接口方面,簡單來說:

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

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

第二步:拿到acceptToken之后,就可以直接訪問資源

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

 

4、客戶端模式

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

從調(diào)接口方面,簡單來說:

第一步:獲取token

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

第二步:拿到acceptToken之后,就可以直接訪問資源

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

 

三、實戰(zhàn)

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

1、Github配置OAuth2

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

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

點擊確定,如圖

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

2、慧安蜂巢配置OAuth2

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

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

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

 

四、總結(jié)

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