@mitmaro/http-authorization-header

Parse and create HTTP Authorization headers.

Stats

stars 🌟issues ⚠️updated 🛠created 🐣size 🏋️‍♀️
45May 10, 2021Jan 28, 2018Minified + gzip package size for @mitmaro/http-authorization-header in KB

Readme

Node HTTP Authorization Header Parser and Generator

Dependency Status Build Status Coverage Status NPM version GitHub license

Parses and generates HTTP Authorization and Proxy-Authorization headers strictly following RFC-7235. Supports legacy style auth-schemes (Basic, Digest, Bearer) as well as the more modern key-value auth params.

Install

npm install --save @mitmaro/http-authorization-header

Documentation

Usage

Parse Header

const http = require('http');
const {parse} = require('@mitmaro/http-authorization-header');

const httpServer = http.createServer((req, res) => {
    const authHeader = req.getHeader('Authorization');
    // authHeader => 'myscheme foo=bar, baz=foobar, buzz="quoted \"value!\""
    
    const authData = parse(authHeader);
    
    console.log(authData);
    /*
    {
        scheme: 'myscheme',
        values: [
            ['foo', 'bar'],
            ['baz', 'foobar],
            ['buzz', 'quotes "value!"']
        ]
    }
    */
}).listen();

Create Header

const {create, createToken68} = require('@mitmaro/http-authorization-header');

// legacy header value support (Basic, Digest, Bearer)
const basicAuthHeader = createToken68('Basic', Buffer.from('username:password').toString('base64'));
// Basic dXNlcm5hbWU6cGFzc3dvcmQ=

// modern form
const rfc7235Header = create('Custom', [['foo', 'bar'], ['foo', 'fuzz'], ['buzz', 'quoted "value!"']]);
// Custom foo=bar,foo=fuzz,buzz="quoted \"value!\""

All exports

const {
    create,
    createUnsafe,
    createToken68,
    createToken68Unsafe,
    parse,
    InvalidHeaderError,
    InvalidInputError,
} = require('@mitmaro/http-authorization-header');

Contributing

If the library is not in compliance with RFC-7235 then create an issue explaining the issue with sample data, or even better create a pull request that adds a test that fails.

Development

Development is done using Node 8 and NPM 5, and tested against both Node 6 and Node 8. To get started

  • Install Node 8 from NodeJS.org or using nvm
  • Clone the repository using git clone git@github.com:MitMaro/http-authorization-header.git
  • cd http-authorization-header
  • Install the dependencies npm install
  • Make changes, add tests, etc.
  • Run linting and test suite using npm run test

License

Based on auth-header which was licensed under CC0-1.0. This project is released under the ISC license.

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.