WWW-Authenticate

In the context of an HTTP transaction, basic access authentication is a method for an HTTP user agent to provide a username and password when making a request.

Features

HTTP Basic authentication (BA) implementation is the simplest technique for enforcing access controls to web resources because it doesn't require cookies, session identifier, and login pages. Rather, HTTP Basic authentication uses static, standard HTTP headers which means that no handshakes have to be done in anticipation.

As a standard protocol, username and password for BA can be passed in URL, for example:

https://username:password@www.example.com/path

Because of this, BA is frequently used where a restricted URL needs to be accessed programmatically, especially from shell scripts or batch files.

Security

The BA mechanism provides no confidentiality protection for the transmitted credentials. They are merely encoded with BASE64 in transit, but not encrypted or hashed in any way. Basic Authentication is, therefore, typically used over HTTPS.

Because BA header has to be sent with each HTTP request, the web browser needs to cache the credentials for a reasonable period to avoid constant prompting user for the username and password. Caching policy differs between browsers. Microsoft Internet Explorer by default caches them for 15 minutes.

While HTTP does not provide a method for a web server to instruct the browser to "log out" the user (forget cached credentials), there are a number of workarounds using specific features in various browsers. One of them is redirecting the user to an URL on the same domain containing credentials that are intentionally incorrect:

https://forget:forget@www.example.com/path

Unfortunately, this behavior is inconsistent between various browsers and browser versions. Only Microsoft Internet Explorer offers a dedicated JavaScript method to clear cached credentials: