2014-05-21 98 views

回答

2

首先,將您對OAuth 2.0的參考更新爲the latest one

正如我們所知,在資源所有者授予訪問權後,隱式授予 ,授權服務器使用重定向URI將用戶代理重定向回客戶端,並且訪問令牌位於片段中。

例如: http://www.myapp.com/googleapi/oauth/#access_token=ya29.JACdaU44_m0MQh0AAABLMVzZHm4KnUWyBECHJ9oM_0M2JC9x0xO6UoI9W8YNEw&token_type=Bearer&expires_in=3600

由於片段沒有返回到服務器(散列片段僅用於客戶端),客戶端腳本必須分析片段並提取參數的access_token的值。

現在,我們來談談您的問題,當然我們可以在客戶端編寫一個函數來從片段中解析訪問令牌並直接使用它,這很簡單明瞭。 Here is a tutorial using this manner

但是,在標準中,存在Web託管客戶端資源。爲什麼? '網絡託管客戶端資源'是一個客戶端資源,它可能包含一些HTML頁面和JavaScript,當然它是網絡託管的,而不是在用戶代理中。由於授權服務器將在帶有訪問令牌的redirect_uri中再次訪問我們的Web應用程序,我們的客戶端Web應用程序服務器將對其進行響應(解析散列片段)。 Here is a tutorial using this manner

總而言之,這兩種方式的區別在於你放置解析函數的地方。

  1. 直接把它在客戶端它自己,並且功能檢測是否用戶代理打到重定向URI,並且如果是,解析來自所述片段的訪問令牌。

  2. 將它放入網絡託管的客戶端資源(位於重定向URI中),當授權服務器使用訪問令牌訪問重定向URI時,該函數將定位重定向URI並解析它。

第二個是標準的,因爲它充分利用了重定向URI,您也可以使用第一個。

據我所知,我還沒有發現任何關於第二種方式的安全考慮。