代理内部网络上的php页面以与Slack App

时间:2016-11-04 03:36:10

标签: php apache proxy slack-api slack

我为我们的团队建立了Slack App

我能够创建Slack Button并使用它来oauth.access

授权应用

My Slack App为Slack中的频道添加Slash Command

到目前为止一切顺利。

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

在这里,托管我需要用于Request URL的网页的服务器位于我们的内部网络上,只有我们VPN上的用户才能访问。< / p>

  • 我们的主要网站,https://example.com
  • 可供全世界访问
  • 托管此页面的服务器位于https://slack.example.com,只有我们VPN上的用户才能访问(两者都是apache 2.4服务器)
  • 请求slack.example.com的不在VPN上的任何人都可以使用https://example.com
  • 我无法将php页面移动到可在VPN外部访问的服务器(它是一个无法移动的大型应用程序的一部分)但是我可以在托管https://example.com的服务中添加一个php页面。

我认为我可以向example.com添加一个php页面,该页面可以作为代理接收来自slack.com的邮件,并将其传递给slack.example.com然后获取来自slack.example.com的回复并将该回复发送回slack.com

这是可能的,如果可以的话,我该怎么做呢?我也可以使用其他解决方案,可能使用Apache进行代理吗?

1 个答案:

答案 0 :(得分:2)

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

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

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

  3. 请求页面需要有权访问您的应用程序服务器,例如:通过VPN。它需要作为代理运行:从Slack接收请求,根据slash命令的细节向应用服务器发出请求,然后将信息返回给Slack。

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