@mitmaro/http-authorization-header
v1.0.0
Published
Parse and create HTTP Authorization headers.
Downloads
14,952
Maintainers
Readme
Node HTTP Authorization Header Parser and Generator
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 [email protected]: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.