2012-10-23 33 views
3

我有一個使用Google API的網絡應用程序。進行身份驗證的過程需要兩次撥打穀歌電話,第一次撥打code,第二次撥打code撥打token。這兩個調用都採用redirect_uri參數。第一次調用使用這個參數,因爲我期望,重定向回到redirect_uri,但是,第二次調用,得到令牌,不重定向,bar驗證它似乎忽略這個參數,所以它有什麼意義?Google get令牌調用的redirect_uri有什麼意義?

回答

4

訪問令牌請求中的redirect_uri參數在OAuth 2.0 specification中被描述爲REQUIRED。

它背後的原因在同一文檔的10.6部分有詳細描述。總之:

  1. 攻擊者可以通過操縱授權請求的request_uri獲得授權碼。唯一可以注意到這個技巧的兩方是受害者(合法用戶)和服務器。客戶仍然不知道這些操作。
  2. 即使使用代碼,攻擊者也無法將其交換到訪問令牌,但它可以嘗試通過代表自己發送「回叫響應」與被盜代碼來欺騙客戶端。
  3. 如果客戶端可以將它收到的代碼交換給令牌,它將授予攻擊者對受害者數據的訪問權限。幸運的是,由於客戶端redirect_uri與服務器看到的不匹配,請求將被拒絕。
+0

因此,基本上它是在第二個電話,以確認它匹配的第一個電話?說實話,我不明白爲什麼攻擊者無法改變這兩個,但謝謝:) –

+0

另外我想你的意思是鏈接到[4.1.3](http://tools.ietf.org/html/rfc6749 #部-4.1.3)。 –

+1

對,我改變了鏈接,謝謝。關於你的問題,攻擊者並不是發送第二個請求,但它是客戶端(意思是你的web應用程序),攻擊者不能發送這樣的請求,因爲它不知道'client_secret'。 –