What is http-auth?
The http-auth npm package provides basic and digest access authentication for Node.js applications. It allows developers to secure their web applications by requiring users to provide a username and password before accessing certain routes or resources.
What are http-auth's main functionalities?
Basic Authentication
This feature allows you to set up basic authentication for your Node.js server. Users will need to provide a username and password to access the protected routes.
const http = require('http');
const auth = require('http-auth');
const basic = auth.basic({
realm: 'Simon Area',
file: __dirname + '/users.htpasswd' // user:password in htpasswd format
});
http.createServer(basic, (req, res) => {
res.end(`Welcome to private area - ${req.user}!`);
}).listen(1337, () => {
console.log('Server running at http://127.0.0.1:1337/');
});
Digest Authentication
This feature allows you to set up digest authentication for your Node.js server. Digest authentication is more secure than basic authentication as it uses MD5 hashing.
const http = require('http');
const auth = require('http-auth');
const digest = auth.digest({
realm: 'Simon Area',
file: __dirname + '/users.htdigest' // user:realm:password in htdigest format
});
http.createServer(digest, (req, res) => {
res.end(`Welcome to private area - ${req.user}!`);
}).listen(1337, () => {
console.log('Server running at http://127.0.0.1:1337/');
});
Other packages similar to http-auth
express-basic-auth
The express-basic-auth package provides basic authentication middleware for Express applications. It is simpler to use with Express compared to http-auth and integrates seamlessly with the Express framework.
passport-http
The passport-http package is a Passport strategy for HTTP Basic and Digest authentication. It is part of the Passport.js ecosystem, which provides a wide range of authentication strategies and is highly extensible.
basic-auth
The basic-auth package is a simple tool for parsing basic authentication headers. It does not provide full authentication middleware but can be used in conjunction with other packages to implement basic authentication.
http-auth
Node.js package for HTTP basic and digest access authentication.
Installation
Via git (or downloaded tarball):
$ git clone git://github.com/gevorg/http-auth.git
Via npm:
$ npm install http-auth
Usage
const http = require("http");
const auth = require("http-auth");
const basic = auth.basic({
realm: "Simon Area.",
file: __dirname + "/../data/users.htpasswd"
});
http
.createServer(
basic.check((req, res) => {
res.end(`Welcome to private area - ${req.user}!`);
})
)
.listen(1337, () => {
console.log("Server running at http://127.0.0.1:1337/");
});
Please check examples directory for more.
Configurations
realm
- Authentication realm, by default it is Users.file
- File where user details are stored.
- Line format is {user:pass} or {user:passHash} for basic access.
- Line format is {user:realm:passHash} for digest access.
- Using a callback, it needs to return the same line format, example:
file: () => 'adam:adam\neve:eve',
algorithm
- Algorithm that will be used only for digest access authentication.
- MD5 by default.
- MD5-sess can be set.
qop
- Quality of protection that is used only for digest access authentication.
- auth is set by default.
- none this option is disabling protection.
msg401
- Message for failed authentication 401 page.msg407
- Message for failed authentication 407 page.contentType
- Content type for failed authentication page.skipUser
- Set this to true, if you don't want req.user to be filled with authentication info.proxy
- Set this to true, if you want to use it with http-proxy.
Running tests
It uses mocha, so just run following command in package directory:
$ npm test
Questions
You can also use stackoverflow to ask questions using http-auth tag.
Utilities
- htpasswd - Node.js package for HTTP Basic Authentication password file utility.
- htdigest - Node.js package for HTTP Digest Authentication password file utility.
Integrations
Please check this link for integration packages.
License
The MIT License (MIT)