NGINX: auth_basic と auth_ldap の両方を使用して場所へのアクセスを制御しますか?

NGINX: auth_basic と auth_ldap の両方を使用して場所へのアクセスを制御しますか?

/app私は nginx-auth-ldap で NGINX 1.8.0 を実行しています。認証/承認に使用しているアプリケーションが動作していますauth_ldap

server {
    listen 80;
    ...
    location /app/ {
        auth_ldap "Restricted";
        auth_ldap_servers test;
        ...
    }
}

自動メンテナンス (Web API) を実行するために、追加のアカウントにアクセス権を付与したいと思います。セキュリティ上の理由から、botLDAP アカウントを作成することはできません。bot

auth_ldapと を同時に使用しようとしましたが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 ファイルにあるユーザー/パスワードのみを受け入れる) という別の認証ダイアログが表示されます。最初のダイアログで既に正しい資格情報を入力している場合は、2 番目のダイアログは表示されないことに注意してください。

あるいは、htaccess 認証情報をすぐに送信してアクセスすることもできます。http://user:[email protected]

関連情報