公網API安全--OAuth認證

以前寫過一個基於簽名的公網API訪問安全控制,另外一種方式是基於OAuth認證協議作安全控制。api

說明

用戶訪問A客戶端,使用B的服務及資源。B只有徵得用戶的受權,才容許A客戶端使用B上用戶的資源和服務。瀏覽器

名詞

  • 第三方客戶端,A客戶端。安全

  • 服務提供商,B服務。服務器

  • 資源全部者,用戶。app

  • 用戶代理,好比瀏覽器。url

  • 認證服務器,B服務上用來提供認證的服務器。.net

  • 資源服務器,B服務上用來存儲用戶的資源的服務器。代理

經過一個權限配置管理界面,業務方配置以後,獲取appid,secret,redirect_url。code

  • 經過受權獲取受權碼。blog

  • 經過受權碼+appid+secret獲取access_token。

  • 經過access_token操做api。

OAuth在客戶端與服務提供商之間,設置一個受權層。

客戶端不直接登錄服務提供商,只登錄受權層,以此將用戶與客戶端區分開。

客戶端登錄受權層所用的令牌,與用戶的密碼不一樣。用戶能夠在登錄的時候,指定受權層令牌的受權範圍和有效期。

客戶端登錄受權層,服務提供商根據令牌的權限範圍和有效期,向客戶端開發對應服務。

  • 用戶打開客戶端,客戶端要求用戶給予受權。

  • 用戶贊成給予客戶端受權。

  • 客戶端使用上一步獲取的受權,向認證服務器申請令牌。

  • 認證服務器對客戶端進行認證後,確認無誤,贊成發放令牌。

  • 客戶端使用令牌,向資源服務器申請獲取資源。

  • 資源服務器確認令牌無誤,贊成向客戶端開發資源。

核心:用戶給客戶端受權,有了受權以後,客戶端能夠獲取令牌,憑令牌獲取資源。

輸入圖片說明]

參照URL:

客戶端受權:

/authorize/app-connect?appid=APPID&redirect_url=xxx&response_type=code&state=xxx

驗證經過,受權服務器重定向到配置的REDIRECT_URL&code=xxx 受權碼

經過受權碼獲取access_token:

/authorize/access-token?appid=APPID&secret=SECRET&code=受權碼&grant_type=authorization_code

驗證經過,返回access_token,refresh_token,expires_in(過時時間戳)

經過refresh_token更新access_token:

/authorize/refresh-token?appid=APPID&grant_type=refresh_token&refresh_token=xxx

驗證經過,返回新的access_token,refresh_token,更新成功

相關文章
相關標籤/搜索