使用NGINX进行API用户和Web用户的AD身份validation

我们目前使用NGINX服务器作为各种服务和应用程序的反向代理。 它正在处理和代理我们创build的Web应用程序的stream量,一个API代理服务器,以及一个单独的程序化API。 下面是一个示例代码示意图,显示代理的资源。

​ foobar.com |-foobar.com/api |-foobar.com/webapp |-foobar.com/proxy 

我们拥有一个具有单点loginfunction的公司AD系统。 我试图将这个与NGINX反向代理整合,以在NGINX后面访问这些服务中的一个或多个服务时validation用户。

我已经看到像https://www.nginx.com/blog/nginx-plus-authenticate-users/这样的post描述了如何让NGINX通过让用户填写login表单来使用AD身份validation,但是这不适用于我们的用例。 这是因为其中一些用户将通过HTTP CRUD操作和/或curl命令与API服务和代理服务进行交互。 另外,这些API和代理用户可能属于其他应用程序而不属于人类。 从这个意义上说,他们完全是程序化的交互。

我如何configurationNGINX来支持人性化和程序化的ADauthentication

没有任何东西像ADauthentication。 您正在寻找的是通过GSSAPI进行Kerberos身份validation。 使用浏览器SPNEGO来获得这样的authentication。 我列举了所有这些术语,为您进一步研究提供了一个更好的起点。

您提供的链接与SSO无关。 它仅描述使用AD LDAP接口进行身份validation的方法。

对于要实现的身份validationtypes,您必须使用AD Kerberos接口。

nginx不支持开箱即用的Kerberos。 据我所知spnego-http-auth-nginx-module是在nginx中实现Kerberos身份validation的最不经济的方式。

有些问题超出了你的问题的范围:Apache有一个非常成熟的Kerberos模块mod_auth_kerb和较新的mod_auth_gssapi。

这不是一个build议。 我个人的经验大多局限于在Apache / mod_proxy_ajp / Tomcat外观背后的Java应用程序中使用Kerberos。