Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

getting "authentication required" when requesting / instead of /index.php

On my server I have the following .htaccess file:

DirectoryIndex index.php

AuthType Basic
AuthName "Password Required"
AuthUserFile /var/www/webinterface/.htpasswd
Options +FollowSymLinks
Require valid-user

<Files index.php>
    Satisfy any
    Allow from *
</Files>

If I request the URL "IP-ADDRESS/index.php", everything works fine, I get the index.php displayed without an authentication prompt. However as soon as I request "IP-ADDRESS/" the browser asks me for my credentials.

Why is this the case? What am I missing?

like image 817
ftiaronsem Avatar asked Jan 04 '12 17:01

ftiaronsem


People also ask

How to use HTTP authentication with PHP?

HTTP authentication with PHP. It is possible to use the header () function to send an "Authentication Required" message to the client browser causing it to pop up a Username/Password input window. Once the user has filled in a username and a password, the URL containing the PHP script will be called again with the predefined variables ...

How to use HTTP authentication with IIS?

For HTTP Authentication to work with IIS, the PHP directive cgi.rfc2616_headers must be set to 0 (the default value). Now PHP should automatically declare $_SERVER [PHP_AUTH_*] variables if the client sends the Authorization header. This is the simplest form I found to do a Basic authorization with retries. // If arrives here, is a valid user.

How do I send an authentication required message to the client?

It is possible to use the header () function to send an "Authentication Required" message to the client browser causing it to pop up a Username/Password input window.

How do I disable RFC2616 authentication in PHP?

1. In your php.ini file, set "cgi.rfc2616_headers = 0" 2. In Web Site Properties -> File/Directory Security -> Anonymous Access dialog box, check the "Anonymous access" checkbox and uncheck any other checkboxes (i.e. uncheck "Basic authentication," "Integrated Windows authentication," and "Digest" if it's enabled.)


1 Answers

Try replacing the block to use mod_setenvif to check the request URI instead of using <Files>. The mod_auth* modules has precedence over mod_dir so the mapping from / to /index.php doesn't happen until after the auth takes place. Mod_setenvif will occur before the auth. Try:

SetEnvIf Request_URI "^/$" allow=yes
SetEnvIf Request_URI "^/index.php$" allow=yes

AuthType Basic
AuthName "Password Required"
AuthUserFile /var/www/webinterface/.htpasswd
Options +FollowSymLinks
Order Deny,Allow
Satisfy any
Deny from All
Require valid-user
Allow from env=allow

If the requested URI is exactly / or /index.php, the variable allow gets set. The stuff after the Auth lines say to deny everything except a valid user or if the variable allow has been set.

like image 142
Jon Lin Avatar answered Oct 21 '22 12:10

Jon Lin