代理内部网络上的php页面与Slack应用程序一起使用


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

我已经为我们的团队建立了一个Slack应用程序。

我能够创建一个Slack按钮,并使用它来授权应用程序oauth。访问

我的Slack应用程序在Slack中添加了一个斜杠命令

到目前为止一切顺利。

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

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

  • 我们的主要网站是:https://example.com
  • 这个页面托管的服务器是,https://slack.example.com这是只有用户可以访问我们的VPN(都是apache 2.4服务器)
  • 任何不在VPN上请求slack.example.com的人都会被提供https://example.com
  • 这是不可能的,我移动php页面的服务器是可访问的外部我们的VPN(它是一个更大的应用程序的一部分,不能移动)我可以添加一个php页面的主机https://example.com.

我认为我可能能够添加一个php页面到example.com,可以作为代理接收来自slack.com的消息,将它们传递给slack.example.com,然后从slack.example.com获得响应并将该响应发送回slack.com

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

我将在DMZ中的单独服务器上运行请求页面,该服务器充当内部应用程序服务器的代理。下面是一个简短的描述:

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

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

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

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