我正在使用 nginx-auth-ldap 运行 NGINX 1.8.0。我有一个正在运行的应用程序/app
用于auth_ldap
身份验证/授权。有用。
server {
listen 80;
...
location /app/ {
auth_ldap "Restricted";
auth_ldap_servers test;
...
}
}
我想授予额外bot
帐户的访问权限来执行一些自动维护(Web API)。出于bot
安全原因,我无法创建 LDAP 帐户。
我尝试同时使用auth_ldap
and auth_basic
(后者为单个bot
用户),但任何凭据都会导致 401。我是否犯了一个错误,或者根本不可能让它以这种方式工作?
server {
listen 80;
...
location /app/ {
auth_ldap "Restricted";
auth_ldap_servers test;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htaccess
...
}
}
如果这行不通,您有其他建议如何继续吗?
注意:我尝试在auth_basic
不同的位置镜像该应用程序。访问控制有效,但应用程序对其 URL 进行硬编码:来自/app-auth-basic
包含链接的响应返回到/app
.我无法控制该应用程序,因此这似乎不会导致任何结果。
server {
listen 80;
...
location /app/ {
auth_ldap "Restricted";
auth_ldap_servers test;
...
}
location /app-auth-basic/ {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htaccess
...
}
}
答案1
你几乎是正确的,但缺少satisfy
指令:
server {
listen 80;
...
location /app/ {
satisfy any;
auth_ldap "Restricted LDAP";
auth_ldap_servers test;
auth_basic "Restricted htaccess";
auth_basic_user_file /etc/nginx/.htaccess
...
}
}
这样,您将首先看到一个身份验证对话框,其中显示“受限 LDAP”(仅接受 LDAP 凭据)。如果您单击“取消”,则会出现另一个身份验证对话框,提示您“受限 htaccess”(仅接受 htaccess 文件中的用户/密码)。请注意,如果您已在第一个对话框中输入了正确的凭据,则第二个对话框永远不会出现。
或者,您可以直接发送 htaccess 凭据以进入。http://user:[email protected]