我们目前正在使用 NGINX 服务器作为各种服务和应用程序的反向代理。它处理和代理我们创建的 Web 应用程序、API 代理服务器以及单独的编程 API 的流量。下面是显示代理背后的资源的示例图。
foobar.com
|-foobar.com/api
|-foobar.com/webapp
|-foobar.com/proxy
我们有一个具有单点登录功能的企业 AD 系统。我正尝试将其与 NGINX 反向代理集成,以便在用户访问 NGINX 后面的一个或多个服务时对用户进行身份验证。
我见过类似的帖子https://www.nginx.com/blog/nginx-plus-authenticate-users/描述如何让 NGINX 通过让用户填写登录表单来使用 AD 身份验证,但这不适用于我们的用例。这是因为其中一些用户将通过 HTTP CRUD 操作和/或 curl 命令与 API 服务和代理服务进行交互。此外,这些 API 和代理用户可能属于其他应用程序,而不是人类。从这个意义上说,它们是完全程序化的交互。
如何配置 NGINX 以支持人工和程序化 AD 身份验证?
答案1
没有像 AD 身份验证这样的东西。你正在寻找的是凯尔伯罗斯通过身份验证全局搜索应用程序编程接口. 要获取此类浏览器身份验证新加坡国家邮政局被使用。我只是列举了所有这些术语,以便为您提供进一步研究的更好起点。
您提供的链接与 SSO 无关。它仅描述了一种使用 ADs LDAP 接口进行身份验证的方法。
对于您想要实现的身份验证类型,您必须使用 ADs Kerberos 接口。
nginx 不支持开箱即用的 Kerberos。据我所知 spnego-http-auth-nginx-模块是在 nginx 中实现 Kerberos 身份验证的实验性最少的方法。
有点超出你的问题范围:Apache 有一个非常成熟的 Kerberos 模块 mod_auth_kerb 和稍新的 mod_auth_gssapi。
这并不是一个建议。我个人的经验主要限于在 Apache/mod_proxy_ajp/Tomcat 外观后面的 Java 应用程序中使用 Kerberos。