2015-06-12 109 views
1

在OAuth 2中,當您添加客戶端時,您會爲其指定重定向網址。OAuth重定向網址

例如

http://example.com

但是當你申請授權用戶,你也傳回一個重定向URL作爲請求的一部分。

例如

authorize?response_type=code&client_id=CLIENT_ID&return_url=http%3A%2F%2Fexample.com%2Fsecure%2F&state=STATE

我的問題基本上是,什麼是對存儲在客戶端的重定向URL的地步?這是否只是爲了確保您只能重定向到原始網站,而不是作爲請求的一部分傳遞的內容?

在任何情況下,我發現的是,作爲請求的一部分發送的返回url參數不符合例如http://example.com/secure,並保存針對客戶端的重定向url始終使用...因此,您不會將其重定向到您的原始請求,而只是轉到主頁。

會發生什麼?爲什麼我們有兩次返回地址?

它應該不僅僅是針對客戶端存儲的域名,然後使用傳回的返回url,然後比較域名的安全性?

回答

1

這確實是一種安全措施,因此只有在註冊/管理時間將響應發送到明確與客戶端關聯的URL。

客戶端可能會註冊多個重定向URI,在這種情況下,在請求中使用redirect_uri查詢參數來指示服務器需要發送響應的註冊值中的哪一個是有用的。如果只有一個註冊值,那麼請求中可以省略redirect_uri查詢參數。

此機制可防止網絡釣魚攻擊,攻擊者釣魚用戶點擊鏈接,該鏈接包含指向攻擊者控制的域/服務器的製作的redirect_uri參數。

該規範確實允許註冊可用於匹配請求中redirect_uri值的模式,例如,可以配置域範圍策略。這是一個特定於實現的選項。請注意,在這種情況下,您需要確保域上可能的URL /路徑實際上由客戶端所有者和其他人控制(例如,不包括從外部域加載內容的頁面,或者潛在的危險wiki /論壇頁)。由於現實生活中相當困難,推薦/默認匹配非常嚴格。