2012-11-02 30 views
0

我正在使用MVC的OAuth 2.0,在這裏找到:http://community.codesmithtools.com/CodeSmith_Community/b/tdupont/archive/2011/03/18/oauth-2-0-for-mvc-two-legged-implementation.aspxMVC的OAuth 2.0 - RequestToken如何工作?

對於任何與此有關的人 - 我對RequestToken感到困惑。有一個控制器可以讓你得到一個請求令牌,這個令牌在5分鐘後到期,並且你將令牌傳遞回去以獲得一個AccessToken。但它從不檢查請求標記的有效性 - 看起來你可以傳入任何你想要的訪問標記。這裏的RequestToken有什麼想法 - 你應該創建自己的方法來存儲,引用,然後刪除那5分鐘的令牌嗎?

感謝, 安迪

回答

1

這是所有關於如何OAuth的協同工作與你的應用程序ID,應用密鑰,併爲您的應用有效域。這是一般

  1. 過程中您的應用程序將使用應用程序ID和祕密與回調(返回URL)一起到的OAuth提供者的請求。

  2. OAuth提供程序獲取請求,檢查您的應用程序ID和密碼,並驗證回調URL是否來自您爲應用程序指定的域。

    2a。如果回調網址不是來自您指定的域,則該請求會被拒絕並出現錯誤。

    2b如果回調網址來自您的域,它會向您的服務器返回一個臨時請求密鑰。

  3. 鑑於您收到請求密鑰,您將它發送回OAuth提供程序以獲取用戶的實際訪問令牌。現在

,至於爲什麼請求關鍵一步到位,這是爲了防止和幫助保護「壞人」試圖使用你的應用程序ID來錯誤地驗證其他用戶。通過向您發送請求令牌(您已批准的回調URL),OAuth提供商有信心實際上請求來自您的服務器。

您絕對可以發回任何字符串而不是請求令牌,但是您很快會從OAuth提供程序返回錯誤,因爲該請求令牌不對應於來自任何已知應用程序的任何現有認證請求。

最後,我不清楚你的意思是'驗證請求令牌'?您沒有生成令牌,可能沒有洞察生成請求令牌的算法。鑑於此,我不確定你將如何驗證這一點。如果您擔心驗證第一步,請查看Facebook OAuth流程。在那裏,他們建議發送一個請求密鑰作爲你的返回Url的一部分(作爲查詢字符串參數)。該請求密鑰將返回到您的應用程序,然後您可以使用它作爲驗證,實際上,這是對您提出的請求的響應。你如何存儲和跟蹤請求密鑰取決於你(會話,數據庫)。在PHP示例中,他們使用'狀態'變量來跟蹤唯一/任意字符串:Facebook OAuth Server Side Login Example (in PHP)

+0

+1瞭解過程的詳細說明 – dougajmcdonald