Giter VIP home page Giter VIP logo

passport-hawk's Introduction

Passport.js stategy for the Hawk authentication scheme.

Build Status

This module allows you to use Hawk as an authentication strategy with passport.

Installation

npm install passport-hawk

Usage

var HawkStrategy = require('passport-hawk');

passport.use('my-hawk-strategy', new HawkStrategy(function (id, done) {
  Users.findById(id, function (err, user){
    if(err) return done(err);
    done(null, {
      key: 		 user.secret,
      algorithm: 'sha256', // sha1 or sha256
      user:		 user
    });
  });
}));

then you can set my-hawk-strategy as a middlware in any route. For instance:

  myExpressApp.use('/api', 
  	passport.authenticate('my-hawk-strategy', { session: false }));

Bewit support

passport-hawk can be used to validate bewit:

var HawkStrategy = require('passport-hawk');

passport.use('my-hawk-strategy', new HawkStrategy({ bewit: true }, function (id, done) {
  //..same as previous section
});

License

MIT

passport-hawk's People

Contributors

aledbf avatar fyockm avatar jfromaniello avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

passport-hawk's Issues

Implementer options are not passed to hawk

Passport allows for options to be passed in the authenticate() call to the implementing library.

Hawk provides options for the implementer to specify the request hostname and port to be used for hmac calculation. See:
https://www.npmjs.com/package/hawk#host-header-forgery

This is especially useful when using a reverse proxy in front of the node server, where the requesting client may make a request on a different protocol (https vs. http) and port (443 vs. 80 or custom port) to the proxy server vs. the server running node.

The passport-hawk implementation does not pass the specified options to the hawk library.

Hand off project

Is there anyone willing to take this project and update it? It's a really small project. I'd be willing to take it over if need be.

passReqToCallback not working

Hi,

I'm using passport-hawk to generate a bewit to authorize documents download in my API but the passReqToCallback option is not working.

I'm calling it as follows:

passport.use('hawk-strategy', new HawkStrategy( { passReqToCallback: true, bewit: true }, (req, id, done) => { if (!req) { return done(); }

But req is getting id value instead of the request object.

What can I do?

Catching "Error: Missing authentication tokens"

I know that I am not sending the proper tokens. I am trying to define my app's behavior when requests do not include Hawk credentials.

Do you know of a good way to catch this error? The error is uncaught and express is returning a 500 (as its supposed too).

Is there a canonical way with this library, or with passport to handle this? ie send back a 401.

I know a few different ways to solve my issue, but I am wondering if there is a common pattern that I am not seeing.

Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.