【问题标题】:Can I put an http psw on a site and still let Facebook REALTIME apis through?我可以在网站上放一个 http psw 并且仍然让 Facebook REALTIME apis 通过吗?
【发布时间】:2011-11-07 16:08:04
【问题描述】:

我正在开发一个使用 Facebook 身份验证和好友的网站,但我还没有准备好让它公开可见。好像如果我在网站目录上输入密码,Facebook 对我的服务器的调用将无法进入。有没有办法为 FB 提供该网站的用户/psw 凭据 - 只是 http 基本身份验证或其他东西可比的,我猜——这样它就能进入?

根据澄清和更多实验进行编辑:

这有两个部分:

  • Facebook Connect 没有问题。当用户访问受保护站点的页面时,他们会看到身份验证面板,然后他们进行身份验证(或不进行身份验证)。如果他们得到它,连接/登录就会随之而来,一切都很好,因为连接信息可能会沿着刚刚经过身份验证的同一个 http 连接返回。 (我对 http 工作的这些部分有点模糊,但我认为这基本上是正确的。)

正如我刚刚意识到的那样,我面临的真正问题是(抱歉;周一早上 / 长周末)来自实时 API 的调用是如何进入的。这些调用是突然到来的,所以有没有经过身份验证的路径进入服务器。 @Martey 关于基于 IP 地址进行身份验证(发布到问题的早期版本)的观点在那里看起来很有希望,但我仍然想知道是否有办法让 FB 与用户/psw 一起发送。

【问题讨论】:

    标签: http authentication facebook-graph-api facebook


    【解决方案1】:

    另一种方法是使用基于 IP 地址的身份验证。通过只允许您的地址和 Facebook 的地址,您将阻止其他人访问该站点,但仍允许来自 Facebook 的任何回调到达。

    针对更新后的问题:如果可以将 HTTP Basic 身份验证添加到回调 URL(即 http://USER:PASSWORD@example.com/),则必须直接添加用户名和密码在创建real-time subscription 时添加到callback_url 参数。但是,这是否可行取决于 Facebook 是否能够解析您的回调 URL 并在与您的服务器通信时正确使用基本身份验证。

    【讨论】:

    • Facebook 不会公布他们的 IP。
    • 由于 OP 关心 Facebook 回调,使用他的服务器的访问日志来确定 Facebook 请求来自哪些 IP 地址/子网应该是相对简单的。
    • 是的,它会起作用,它看起来就像是一场维护噩梦。你怎么知道它是 Facebook 的 IP,而不是试图看起来像 Facebook 的人?
    • 实际的 Facebook 回调将包含创建实时订阅时发送的相同 verify_token。由于最初的问题是关于在开发过程中保护站点,我认为维护它不会是一场“噩梦”,特别是如果 OP 使用子网而不是特定的 IP 地址。
    • 我刚刚尝试将身份验证放入回调 URL,但它 401'ed 进入服务器。此 IP 身份验证并不完美,但目前可以使用。到目前为止,我已经看到来自 66.220.x.x 和 69.171.x.x 的 POST;您的里程当然可能会有所不同。我现在宣布胜利;感谢大家的帮助。
    【解决方案2】:

    只为 Facebook 的爬虫做一个例外——你不一定需要将完整的内容返回给爬虫,只需要返回元标记

    用户代理是facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)

    {edit} 为什么不将您用于实时 API 的回调 URL 从您的身份验证系统中排除?任何人访问该 URL 都没有其他原因,并且您可能没有任何普通用户可以看到的内容,因为所有回调所做的都是解密 Facebook 中的信息并对其进行处理{edit}

    【讨论】:

      【解决方案3】:

      我认为这是正确的方法(这可能是上面@Igy 所指的):

      <Directory /path/to/site>
      
      ## Set up the basic password protection                                                                                            
      AuthType basic
      AuthName YourAuth
      AuthUserFile /path/to/auth/file
      AuthGroupFile /path/to/group/file
      require group YourGroup
      
      # Handle both ALLOW and DENY directives
      Order allow,deny
      
      # Allow the facebook servers (sadly, we still have to guess/track the addresses)
      Allow from 66.220
      Allow from 69.171
      Allow from 69.63
      
      # "Satisfy any" means that any of the above techniques will work for access
      # Thus, you get in if you have a password or if you are coming from one of the
      # specified addresses                                             
      Satisfy any
      
      </Directory>
      

      到目前为止,一切都很好,无论如何......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-07
        • 2010-11-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多