這不是關於通配符域。這是關於需要在Facebook登錄中添加完全不同的域到有效的OAuth重定向URI。沒有有效的OAuth重定向URI的Facebook登錄
我們有一個網絡應用程序,我們的客戶可以設置自己的自定義域(example.com,xyz.net等)。我們不知道將使用哪些域。
在Facebook上,我們有一個應用程序負責Facebook登錄。似乎我們需要特別將每個使用FB登錄的域列入白名單。
手動添加域不是一個選項。我們有什麼選擇?
謝謝。
這不是關於通配符域。這是關於需要在Facebook登錄中添加完全不同的域到有效的OAuth重定向URI。沒有有效的OAuth重定向URI的Facebook登錄
我們有一個網絡應用程序,我們的客戶可以設置自己的自定義域(example.com,xyz.net等)。我們不知道將使用哪些域。
在Facebook上,我們有一個應用程序負責Facebook登錄。似乎我們需要特別將每個使用FB登錄的域列入白名單。
手動添加域不是一個選項。我們有什麼選擇?
謝謝。
我能想到的最簡單的解決方案是使用一個非常寬鬆的重定向uri驗證的中間身份服務。這種方法有一個good discussion以及與IdentityServer4有關的一些安全問題。
我之前使用過自定義重定向uri驗證的身份服務,但僅限於非常嚴格的情況,因爲這是OAuth流程中最受攻擊的漏洞之一。您需要的靈活性會大大削弱安全性。
要在IdentityServer4中實現它,您需要在身份服務器上設置Facebook身份驗證,並在Facebook上註冊身份服務器的地址。然後,您將創建客戶端來表示您的新域。這可能是一切事物的單一客戶端(使事情變得更加不安全),或者您可以爲客戶端添加一種方式,以便向身份服務器註冊自己(例如dynamic client registration)。
當客戶想連接到Facebook時,他們將使用Open Id Connect連接到身份服務器,然後該身份服務器將與Facebook進行通信。在IdentityServer4中,客戶端將爲此添加中間件UseOpenIdConnectAuthentication
(see here for an example)。
長話短說,您應該使用中間身份服務來解決您的問題。身份服務將是唯一需要註冊到Facebook的網址,您的客戶將註冊您的身份服務,您將可以控制該服務。
雖然力量巨大,但責任重大。走最少的努力路徑將導致解決方案大大降低安全性。使用身份服務(如dynamic client registration protocol)實施安全的動態註冊將允許您爲每個客戶端使用一個嚴格的重定向URI,並使您的系統儘可能安全,因爲您可以合理獲取它。
_「手動添加域不是一個選項。我們有什麼選擇?「 - 只有選擇接受這是不可能的。 – CBroe
爲什麼不是一個好主意,我在這裏概述:http://stackoverflow.com/a/34952548/1427878 – CBroe