No authentication prompt with if block
    Maxim Dounin 
    mdounin at mdounin.ru
       
    Fri Feb  7 19:09:42 UTC 2014
    
    
  
Hello!
On Fri, Feb 07, 2014 at 10:05:32AM -0800, Grant wrote:
> Authentication works fine if I don't include the if block but I'd like
> to allow only a certain user access to this server block.  I get a 403
> in the browser without any prompt for authentication.
> 
> auth_basic "Authentication Required";
> auth_basic_user_file htpasswd;
> if ($remote_user != "myuser") {
>     return 403;
> }
> 
> What am I doing wrong?
Rewrite directives, including "if", are executed before access 
checks (and hence auth_basic).  So in your cofiguration 403 is 
returned before auth_basic has a chance to ask for authentication 
by returning 401.
Something like
   map $remote_user $invalid_user {
       default      1;
       ""           0;
       "myuser"     0;
   }
   if ($invalid_user) {
       return 403;
   }
   auth_basic ...
should work, as it will allow empty $remote_user and auth_basic 
will be able to ask for authentication if credentials wasn't 
supplied.
-- 
Maxim Dounin
http://nginx.org/
    
    
More information about the nginx
mailing list