在内部网络上代理一个 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 上的用户可以访问。
- 我们的主要网站可供全世界访问,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 进行代理?
我会 运行 DMZ 中单独服务器上的请求页面充当内部应用程序服务器的代理。以下是简要说明:
请求 url(=请求页面)的 php 脚本需要可访问 public 互联网,以便 Slack 可以调用它。我会把它放在一个单独的服务器上,然后将该服务器放在贵公司的 DMZ 中。这通常是需要从外部访问的服务器的最佳位置,但也需要访问公司内部的服务器。确保使用 SSL 和验证令牌来保护来自 Slack 的调用。
请求页面可以 运行 在小型服务器上,并且需要有网络服务器(例如 apache)和 php。如果您计划有更复杂的请求,您可能还需要一个数据库。它还需要 运行 SSL,因此您需要一个证书。如果满足这些要求,您也可以在外部使用现有的网络服务器 (example.com)。
请求页面需要访问您的应用服务器,例如通过 VPN。它需要充当代理:接收来自 Slack 的请求,根据斜杠命令的细节向应用程序服务器发出请求,然后 return 将信息返回给 Slack。
另外一个重点是用户认证。我从你的问题中了解到,并非你的 Slack 团队中的所有用户都应该有权访问应用程序服务器,因此你的请求脚本需要有一种方法来区分哪些用户可以访问,哪些不允许。如果可以通过特定 Slack 组的成员身份来识别这些用户,那将是最简单的。无论如何,您可能需要一个额外的机器人来确保将 Slack 用户映射到 VPN 用户。
我已经为我们的团队构建了 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 上的用户可以访问。
- 我们的主要网站可供全世界访问,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 进行代理?
我会 运行 DMZ 中单独服务器上的请求页面充当内部应用程序服务器的代理。以下是简要说明:
请求 url(=请求页面)的 php 脚本需要可访问 public 互联网,以便 Slack 可以调用它。我会把它放在一个单独的服务器上,然后将该服务器放在贵公司的 DMZ 中。这通常是需要从外部访问的服务器的最佳位置,但也需要访问公司内部的服务器。确保使用 SSL 和验证令牌来保护来自 Slack 的调用。
请求页面可以 运行 在小型服务器上,并且需要有网络服务器(例如 apache)和 php。如果您计划有更复杂的请求,您可能还需要一个数据库。它还需要 运行 SSL,因此您需要一个证书。如果满足这些要求,您也可以在外部使用现有的网络服务器 (example.com)。
请求页面需要访问您的应用服务器,例如通过 VPN。它需要充当代理:接收来自 Slack 的请求,根据斜杠命令的细节向应用程序服务器发出请求,然后 return 将信息返回给 Slack。
另外一个重点是用户认证。我从你的问题中了解到,并非你的 Slack 团队中的所有用户都应该有权访问应用程序服务器,因此你的请求脚本需要有一种方法来区分哪些用户可以访问,哪些不允许。如果可以通过特定 Slack 组的成员身份来识别这些用户,那将是最简单的。无论如何,您可能需要一个额外的机器人来确保将 Slack 用户映射到 VPN 用户。