在内部网络上代理一个 php 页面以与 Slack App 一起使用

Proxy a php page on internal network to use with Slack App

我已经为我们的团队构建了 Slack App

我能够创建 Slack Button and used that to authorize the app with oauth.access

我的 Slack App 添加了一个 Slash Command 到 Slack 中的频道

到目前为止一切顺利。

Slash 命令需要一个 Request URL,它只是将接收斜杠命令有效负载并可选择将响应发送回 Slack 通道的页面。

这里有问题,托管我需要用于 Request URL 的页面的服务器在我们的内部网络上,只有我们 VPN 上的用户可以访问。

我在想我可以向 example.com 添加一个 php 页面,它可以充当从 slack.com 接收消息的代理,然后将它们传递给 slack.example.com 然后从 slack.example.com 获取响应并将该响应发送回 slack.com.

这可能吗?如果可以,我该怎么做?我也对其他解决方案持开放态度,可能使用 Apache 进行代理?

我会 运行 DMZ 中单独服务器上的请求页面充当内部应用程序服务器的代理。以下是简要说明:

  1. 请求 url(=请求页面)的 php 脚本需要可访问 public 互联网,以便 Slack 可以调用它。我会把它放在一个单独的服务器上,然后将该服务器放在贵公司的 DMZ 中。这通常是需要从外部访问的服务器的最佳位置,但也需要访问公司内部的服务器。确保使用 SSL 和验证令牌来保护来自 Slack 的调用。

  2. 请求页面可以 运行 在小型服务器上,并且需要有网络服务器(例如 apache)和 php。如果您计划有更复杂的请求,您可能还需要一个数据库。它还需要 运行 SSL,因此您需要一个证书。如果满足这些要求,您也可以在外部使用现有的网络服务器 (example.com)。

  3. 请求页面需要访问您的应用服务器,例如通过 VPN。它需要充当代理:接收来自 Slack 的请求,根据斜杠命令的细节向应用程序服务器发出请求,然后 return 将信息返回给 Slack。

  4. 另外一个重点是用户认证。我从你的问题中了解到,并非你的 Slack 团队中的所有用户都应该有权访问应用程序服务器,因此你的请求脚本需要有一种方法来区分哪些用户可以访问,哪些不允许。如果可以通过特定 Slack 组的成员身份来识别这些用户,那将是最简单的。无论如何,您可能需要一个额外的机器人来确保将 Slack 用户映射到 VPN 用户。