没有有效OAuth重定向URI的Facebook登录

AFR*_*FRC 5 facebook oauth facebook-graph-api facebook-login

这与通配符域无关。这是关于在Facebook登录名上将完全不同的域添加到有效OAuth重定向URI的需要。

我们有一个Web应用程序,客户可以在其中设置自己的自定义域(example.com,xyz.net等)。我们不知道将使用哪些域。

在Facebook上,我们只有一个应用程序可以处理Facebook登录。似乎我们需要将使用FB登录的每个域明确列入白名单。

不能手动添加域。我们有什么选择?

谢谢。

Chi*_*ara 1

我能想到的最简单的解决方案是使用具有非常宽松的重定向 uri 验证的中间身份服务。对这种方法以及与IdentityServer4相关的一些安全问题进行了很好的讨论

我之前曾对身份服务使用过自定义重定向 uri 验证,但仅适用于非常有限的情况,因为这是 OAuth 流程中最常被利用的漏洞之一。您所需的灵活性会大大削弱安全性。

要在 IdentityServer4 中实现它,您需要在身份服务器上设置 Facebook 身份验证,并向 Facebook 注册身份服务器的地址。然后,您将创建客户端来代表您的新域。这可能是所有事情的单一客户端(使事情变得更加不安全),或者您可以为您的客户端添加一种向身份服务器注册自己的方法(例如动态客户端注册)。

当客户端想要连接到 Facebook 时,他们将使用 Open Id Connect 连接到身份服务器,然后身份服务器将与 Facebook 进行通信。在 IdentityServer4 中,客户端将为此添加中间件UseOpenIdConnectAuthentication请参阅此处的示例)。

长话短说,您可以通过使用中间身份服务来解决您的问题。身份服务将是唯一需要注册到 Facebook 的 URL,您的客户将使用您可以控制的身份服务进行注册。

权力越大,责任也越大。采取最省力的路径将导致安全性大大降低的解决方案。使用身份服务(例如动态客户端注册协议)强制执行安全动态注册将允许您为每个客户端使用单个严格的重定向 uri,并使您的系统尽可能安全。