Numerous Pulsating Martians

    @mitmaro/http-authorization-header
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.0 • Public • Published

    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.

    Install

    npm i @mitmaro/http-authorization-header

    DownloadsWeekly Downloads

    1,203

    Version

    1.0.0

    License

    ISC

    Last publish

    Collaborators

    • avatar