2015-01-27 106 views
4

我無法弄清楚門禁系統中令牌和授權之間的區別。在哪一刻,門衛創建一個訪問授權和訪問令牌?該文檔似乎並沒有提到它,現在我正在閱讀代碼,但不是十幾行。訪問授權和訪問令牌之間的區別

+0

你可以發佈一個鏈接到這兩個文件?我的意思是,文檔中的一個鏈接是關於Access Grant和其他關於Access Token的討論? –

+0

沒有文檔。我只在代碼中看到它們,但在文檔中沒有提及。 – Tute

回答

9

我推薦也讀了documentation of oauth2
據我所知,門衛是基於該文件中描述的協議。

在門衛中,您將首先獲得訪問授權,然後訪問令牌。

訪問授權通常只能保持很短的時間(門衛中的默認值爲10分鐘)。 您將通過請求GET to api-url/oauth/authorize來獲得此信息(不要忘記將client_id,redirect_uri和response_type作爲參數,response_type將具有值「code」)。

一旦用戶允許應用程序(用戶點擊「允許」按鈕),門衛將在返回的url中返回訪問授權作爲參數。 獲取該代碼,您現在可以使用它向api-url/oauth/token發出POST請求以獲取您的access_token和refresh_token。

使用access_token,您可以在有限的時間內獲取API的資源(如果我沒有弄錯,門衛的默認值是一個小時)。 當acces_tooken過期時,使用refresh_token獲取新的access_token等。

總之,訪問授權是作爲用戶已允許應用程序使用其資源的標誌給出的關鍵。
訪問令牌是允許應用程序在已定義的有限時間內使用資源的關鍵。

希望它可以幫助。

+2

我還會補充一點,重要的是授予代碼通過應用程序不信任的Web代理(通常是Web瀏覽器)以明文方式傳遞。然後它使用此代碼與通過上述POST請求發送的祕密相結合來安全地獲取令牌。 – peterept

2

我假設您正在討論Web服務器流程,因爲您在Rails應用程序中使用Ruby gem(如您所知,有4個流程)。

通常在Web服務器流程中,格蘭特是用戶點擊鏈接進行同意授權的時刻:他/她將被要求授權應用程序讀取/寫入數據。

如果同意被授予,那麼應用程序將得到一個臨時代碼。有了這個代碼,在後臺,應用程序會要求令牌服務提供商。

然後,只有令牌,應用程序才能夠使用服務提供者API。