99国产精品白浆在线观看_欧美日韩成人电影_亚洲一区二区三区在线视频观看_97婷婷大伊香蕉精品视频_成人gv片无码免费网站_久久九九精品96国产精品_麻豆网站在线播放_国产一级a毛卡片不收费_日本中文字幕在视频_亚洲高清视频免费看

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

OAuth2原來這樣用

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

一、理論

1、OAuth2介紹

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

2、OAuth2角色

OAuth2的標準定義了以下幾種角色:

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

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

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

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

3、OAuth2認證流程

如圖是OAuth2的認證流程圖:

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

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

(3)、客戶端拿到授權碼向認證服務器換取令牌token。

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

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

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

 

二、模式

OAuth2的標準定義了以下四種授權模式;

1、授權碼模式

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

       官網(wǎng)流程圖:

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

第一步:獲取code:

eg:oauthServer+"/oauth/authorize?

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

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

redirect_uri,授權碼會作為它的參數(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)一認證服務會根據(jù)該認證客戶端權限信息判斷,決定是否返回信

息。

 

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

 

2、簡化模式

       簡化模式是對授權碼模式進行的簡化,直接跳過獲取授權碼的步驟,直接在瀏覽器中向認證服務器申請令牌。

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

第一步:訪問授權,要傳client_id:客戶端id,redirect_uri:重定向uri,response_type為token,

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

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

 

第二步:授權通過,會重定向到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、密碼模式

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

信任客戶端。

從調(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、客戶端模式

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

從調(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)平臺中的應用,采用的是讓用戶在系統(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)絡協(xié)議選擇http還是https,重定向URL模板就是GitHub上配置得回調(diào)地址,供應商選擇Github,用戶組端ID和用戶組機密為上一步github中得ClientId和Client Secrests,保存。

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

 

四、總結

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