npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@jambonz/http-authenticator

v0.2.3

Published

a drachtio middleware package for jambonz that delegates sip authentication to a customer-supplied http api

Downloads

57

Readme

http-authenticator CI

drachtio middleware that delegates sip authentication to an http api. This allows, for instance, a multi-tenant sip application server to delegate authentication to a customer api.

The middleware-returning function can be invoked EITHER with an HTTP URL to call OR a function yielding a Promise that resolves to an HTTP URL. Alternatively, instead of a returning a URL, and object can be provided with url, username, and password properties if you wish to protect your endpoint with HTTP Basic Authentication.

An HTTP POST will be made to the specified URL with a JSON body containing the sip method and the components from the Authorization header. The HTTP server should return a status code of 200 in all cases, containing a JSON body with instructions on whether to admit the request.

To admit the request, send a 200 response with a status of ok, e.g.

{"status": "ok"}

To deny the request, send a 200 response with a status of fail. The status field MUST be provided. Optionally, a response MAY include a msg attribute, an expires attribute, and/or a blacklist attribute.

  • The msg property is simply a human-readable description of why an authentication failed.
  • The expires value provides a value in seconds for the duration of a granted registration. This value, if provided, must be less than the requested expiration. If not provided, the requested expires value is granted.
  • The blacklist property shall contain a number indicating a period of time, in seconds, that the source IP address should be blocked. A value of -1 means forever.
{"status": "fail"}

or

{"status": "fail", "msg": "unknown user"}
{"status": "fail", "blaclist": 3600}

Additionally, for admitted requests, the middleware adds a req.authorization object which contains two properties:

  • challengeResponse - an object containing the parsed elements of the sip Authorization header, and
  • grant - an object containing the json response received in the 200 OK to the POST request.
const authenticator = require('@jambonz/http-authenticator')({
  url: 'https://example.com/auth',
  auth: {
    username: 'foo',
    password: 'bar'
  }
});

srf.use('invite', authenticator);