Basic HTTP Authentication Parser

2.0.8 · maintenance · verified Wed Apr 22

simple-auth-basic is a lightweight Node.js module designed for parsing HTTP Basic Authorization headers. It extracts the username and password from the 'Authorization' header in an incoming request or a raw header string, returning an object with `name` and `pass` properties. If the header is invalid or missing, it returns `undefined`. The current stable version is 2.0.8. As a focused utility for a well-established standard, its release cadence is generally slow, primarily for maintenance and compatibility updates rather than new features. Its key differentiator is its simplicity and singular focus on parsing the header, leaving credential validation to the application logic, often paired with a timing-safe string comparison library like `tsscmp` for security.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates setting up a basic Node.js HTTP server that uses simple-auth-basic to parse Authorization headers and perform credential validation. It includes an example of using `tsscmp` for secure password comparison.

import http from 'http';
import auth from 'simple-auth-basic';
import compare from 'tsscmp'; // Often used for timing-safe comparisons

const server = http.createServer((req, res) => {
  const credentials = auth(req);

  // Basic function to validate credentials (against a user store in real apps)
  function check (name, pass) {
    let valid = true;
    // Using tsscmp to prevent timing attacks
    valid = compare(name, 'john') && valid;
    valid = compare(compare(pass, 'secret') && valid);
    return valid;
  }

  if (!credentials || !check(credentials.name, credentials.pass)) {
    res.statusCode = 401;
    res.setHeader('WWW-Authenticate', 'Basic realm="Secure Area"');
    res.end('Access denied');
  } else {
    res.end(`Welcome, ${credentials.name}! Access granted.`);
  }
});

const port = 3000;
server.listen(port, () => {
  console.log(`Server listening on http://localhost:${port}`);
  console.log('Try accessing with "john:secret" basic auth.');
});

view raw JSON →