程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> Google Open API授權認證體系

Google Open API授權認證體系

編輯:PHP基礎知識
 

終端用戶在使用第三方軟件訪問用戶受保護的資源時,都需要終端用戶授權給第三方軟件。如用戶在使用第三方軟件需要訪問或者操作用戶在Google上注冊的服務(Gmail服務,Calendar服務等)時,就需要用戶將相關資源的權限授權給該軟件。Google除了提供了很多個性化的服務外,同時提供了一套完整的服務授權體系。Google的服務認證體系包含了多種認證授權的方式,如AuthSub授權認證服務、OAUTH授權認證服務與ClientLogin授權認證服務等。軟件開發商可以根據自己軟件的特點來選擇合適的認證方式。本文將簡要的介紹這三種認證服務。

、Google授權認證體系

Google的服務認證體系包含了多種認證授權的方式,到目前為止,Google提供了以下四種授權認證方式:AuthSub授權認證服務、OAUTH授權認證服務、ClientLogin授權認證服務與Gadgets授權認證服務等。如下圖所示:

 

軟件開發商可以根據自己軟件的類型來選擇合適的認證方式。如果你的軟件是單機版的應用(如單機版的桌面應用)時,你應該選擇ClientLogin授權認證服務;如果你的軟件是基於BS多用戶使用的WEB應用時,你可以考慮選擇AuthSub授權認證服務或者OAUTH授權認證服務;如果你的應用是小工具(小工具是簡單的HTML和JavaScript應用程序,可以嵌入到網頁中或其他應用程序中,比如為iGoogle或者Open Social容器開發的小工具)類型的軟件時,就應該是用Gadgets授權認證服務。

在對Google Open API授權認證體系有了基本了解後,我們就逐一認識下每種授權認證方式的業務流程。

二、Google ClientLogin授權認證

當你開發的程序是單機版、需終端用戶安裝的桌面程序時,就要采用ClientLogin的授權認證方式。由ClientLogin的意思,我們基本上就知道該授權認證服務是基於終端用戶的帳號信息(即用戶名與密碼)進行登錄校驗來進行授權的。

Google ClientLogin授權認證的服務地址是:

https://www.google.com/accounts/ClientLogin 第三方軟件拿著用戶提供的Google帳號

信息請求該服務地址進行檢驗,校驗通過後,Google服務將Auth Token返回給第三方軟件

,這樣以後第三方軟件就可以拿著這個Auth Token訪問該用戶在Google上注冊的服務資源

。由於第三方軟件是單用戶使用的,本地安裝的軟件,所以用戶的帳號信息不會洩漏,因

而是安全的。ClientLogin授權認證服務的具體步驟如下圖所示:

 

 

1.終端用戶使用第三方軟件操作自己在Google注冊的某項服務之前,就會使用自己的帳號去請求Google ClientLogin服務地址。請求只能使用HTTP POST,默認的Content-Type是application/x-www-form-urlencoded類型的。請求需要的參數如下表所示,參數應放在POST請求的包體中。

 

參數

描述

accountType

賬戶類型:GOOGLE 、HOSTED、HOSTED_OR_GOOGLE

Email

注冊郵箱

Passwd

注冊密碼

service

需授權訪問的服務名,服務名格式可以以如下形式提供:

companyName-applicationName-versionID

source

申請授權的第三方應用名

logintoken

可選,驗證碼的token

logincaptcha

可選,驗證碼

 

2.Google ClientLogin服務將校驗用戶的帳號信息,校驗通過將為第三方軟件頒發Auth Token並放置在響應的包體中。若檢驗失敗將返回403HTTP狀態碼。

3.第三方軟件解析Google ClientLogin服務的響應包體,並解析出Auth token的值。以後只需要帶上該token就可以訪問用戶授權的服務資源。

4.Google服務將響應第三方軟件的請求並處理之。

 

三、Google OAUTH授權認證

當你開發的程序是基於BS的多用戶使用的WEB應用時,就可以使用AuthSub授權認證服務或者OAUTH授權認證服務,我們先介紹Google的OAUTH授權認證服務。OAUTH是一種規范,前一篇文章已經對OAUTH規范進行過介紹。既然OAUTH是一種規范,Google OAUTH也應該遵循該規范,所以在此不再對OAUTH展開討論,只會簡單介紹下Google OAUTH服務。

先介紹Google OAUTH三個服務的URL

·請求未授權的Request Token服務地址:

https://www.google.com/accounts/OAuthGetRequestToken

·請求授權的Request Token服務地址:

https://www.google.com/accounts/OAuthAuthorizeToken

·請求Access Token服務地址:

https://www.google.com/accounts/OAuthGetAccessToken

Google OAUTH具體的流程如下圖所示:

 

1.用戶使用第三方軟件操作用戶在Google上的若干個服務資源前,第三方軟件先向Google OauthGetRequestToken服務請求辦法未授權的Request Token。

2.Google收到第三方軟件的請求後,判斷該軟件是否注冊。若軟件注冊了,就為其頒發未授權的Request Token。

3.第三方軟件拿到未授權的Request Token後,向Google OauthAuthorizeToken服務請求用戶為其未授權的Request Token進行授權。

4.Google收到第三方軟件的請求後,引導用戶進行登錄授權,並提示用戶哪些資源要授權,是否確認授權。

5.用戶確認是否授權。

6.若用戶同意授權,Google將向用戶返回授權的Request Token。

7.第三方軟件拿到用戶授權的Request Token後,向Google OauthGetAccessToken服務請求將授權的Request Token換取Access Token。

8.Google認證請求,通過認證便向第三方軟件頒發Access Token。

9.第三方軟件每次訪問後只要帶上Access Token就可以訪問用戶授權的資源

10.Google 處理第三方軟件的請求。

Google OAUTH 提供了一個Demo 環境,大家可以去http://googlecodesamples.com/oauth_playground/ 體驗下。由於本人(本人沒有自己的網站,只是想了解下,Yahoo,Flickr對於初學者或者非商業人員提供了非商用的consumer key的申請)一直沒有申請到Google OAUTH Consumer key,所以沒辦法自己寫代碼去測試。

 

四、Google AuthSub授權認證

當你開發的程序是基於BS的多用戶使用的WEB應用時,可可以考慮采用Google AuthSub的認證方式。那Google AuthSub與Google OAUTH有什麼區別了?一、Google OAUTH認證是遵守國際OAUTH規范的,是一種標准化的東西,而Google AuthSub只是Google自己實現的一種方式,是非標准化的;二、Google OAUTH是開放的,與OpenId結合,將Google用戶體系與其他服務提供商用戶體系、授權服務打通,比Google AuthSub更開放;三、Google OAUTH將請求都進行簽名,而AuthSub沒有,安全性沒有OAUTH高。當然,AuthSub也有自己的優勢:第三方應用與Google認證中心交互過程簡單,開發人員更容易理解與實現。如果你開發出來的程序只涉及到了Google的服務,不妨先考慮AuthSub認證方式,應該它比Google OAUTH更方便。

Google AuthSub認證流程如下圖所示:

 

 

1.第三方Web應用向Google 認證中心發起AuthSub認證請求,Google AuthSub的授權認證服務請求地址為:https://www.google.com/accounts/AuthSubRequest 。

2.Google認證中心收到第三方Web應用的AuthSub請求後,將引導用戶登錄(若用戶沒有登錄)並提醒用戶是否將相關受保護資源授權給第三方Web應用。

3.用戶登錄(若沒登錄)並確認是否同意授權給第三方Web應用。

4.Google將根據用戶的操作響應第三方Web應用。若用戶同意授權,將會為第三方Web應用辦法Token並返回給第三方應用。

5.第三方Web應用收到Google的Token後,帶上它就可以訪問用戶授權的Google服務資源。

6.Google響應第三方應用請求並將處理結果返回給它。

 

Google提供了一個Demo,下面是用戶登錄授權的頁面: 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved