我正在将反向代理配置从 Apache 移至 IIS。其中一些站点需要在代理上进行身份验证才能继续。为简单起见,这些站点位于单独的 IIS 站点上。我如何指定此站点和/或我在其中配置的反向代理可由特定 AD 组使用?
我尝试过的:
下面的操作是在 IIS 中仅启用 Windows 身份验证的情况下完成的。全部都是 Server 2016 / IIS 10。
将托管反向代理站点的文件夹的 NTFS 权限设置为仅限
domain\desiredgroup
和proxy\iis_iusrs
组,但这没有帮助 - 它仍然允许任何人domain\domain users
通过。编辑身份验证规则,允许
domain\desiredgroup
访问但domain\domain users
被拒绝。这会阻止所有人。
答案1
更可接受的方法是使用应用程序请求路由 (ARR)- 但这需要设置额外的 AD FS(Active Directory 联合身份验证服务)服务器。
我最近想对 Kibana 实例做与您相同的事情,并碰巧发现了这个帮助博客:https://www.smbadmin.com/2017/07/securing-kibana-with-iis-reverse-proxy.html
由于链接在堆栈上不被视为好的答案,我将总结一下:
- 安装具有 Web 服务器角色的 IIS 以及 URL 授权、Windows 身份验证和管理工具。
- 使用 URL 重写模块配置 IIS 反向代理。这可能需要进行一些调整,具体取决于后端网站/Web 应用程序的性质,在某些情况下可能会完全失败(稍后会详细介绍)。
- 设置 SSL(可选) - 代理接受通过 https 传入的流量 - 后端可以使用 http,因为它是私有连接。这是保护未启用 SSL 的网站/应用程序的好方法。
- 设置身份验证 - 使用 IIS 网站的身份验证模块,禁用匿名并启用首选方法,在我的情况下为“Windows 身份验证”。
- 设置授权规则 - 删除允许所有默认规则并为应该有访问权限的 AD 用户或组添加允许规则。
所以,这对我的 Kibana 安装来说效果很好,所以我决定将它部署到 Jenkins 和许多其他网站和 Web 应用程序中,并进行了一些调整以使效果最佳。
然而,警告- 我尝试过的一些网站就是不行 - 例如 Confluence,每次刷新页面时都会不断弹出授权窗口。另一个鲜为人知的闭源自定义 Web 应用程序使用了一些糟糕的 Web 开发实践,可能会不断导致 500 错误和错误重定向。
我可能会在将来尝试设置 ARR,看看它在这些情况下是否能更好地发挥作用,但 ARR 超出了你原始问题的范围。
答案2
IIS 似乎本身不支持。