Skip to content

An hapi authentication strategy to handle NTLM-authentication.

License

Notifications You must be signed in to change notification settings

mancioshell/hapi-ntlm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NPM version

hapi-ntlm

An hapi authentication strategy to hanlde NTLM-authentication.

This module use ntlm-ad-client under the hood and is heavily inspired by express-ntlm written by Fabio Poloni

install

$ npm install hapi-ntlm

example usage - auth.js

exports.register = (server, options, next) => {

  let domain = 'YOUR_DOMAIN';
  let hostname = 'YOUR_AD_HOSTNAME';
  let port = 'YOUR_AD_POST';
  let path = null;
  let use_tls = false;
  let tls_options = undefined;

  const generateInfo = async (request, reply, result) => {
    return await Promise.resolve('info');
  }

  let authOptions = {
      domain,
      hostname,
      port,
      path,
      use_tls,
      tls_options,
      generateInfo
  }

  server.auth.strategy('ntlm-auth-strategy', 'ntlm', false, authOptions);

  server.route({
      method: 'GET',
      path: '/',
      config: {
          auth: 'ntlm-auth-strategy'
      },
      handler: (request, reply) => {
          reply({
              'msg': request.auth.credentials
          }).code(201);
      }
  });

  next();
};

exports.register.attributes = {
  name: 'auth',
  version: '0.0.1'
}

example usage - server.js

const PORT = 3000
const HOSTNAME = '127.0.0.1'

const Hapi = require('hapi');
const server = new Hapi.Server();

function build(cb) {
    server.connection({
        host: HOSTNAME,
        port: PORT
    });

    server.register([
        require('hapi-ntlm'),
        require('./auth')  
    ], (err) => {
        cb(err, server);
    });
}

build((err, server) => {
    if (err) {
        console.error(err);
        throw err;
    }
    server.start((err) => {
        if (err) {
            throw err;
        }
        console.info('Server running at:', server.info.uri);
    });
});

options

Name type description
hostname string Hostname of the Active Directory.
port string Port of the Active Directory.
domain string Default domain if the DomainName-field cannot be parsed.
path string Base DN. not implemented yet
use_tls boolean Indicates wether to use TLS or not.
tls_options object An options object that will be passed to
generateInfo function An async function to generate extra user info
tls_options.ca string / array / Buffer Override the trusted CA certificates provided by Node. Refer to tls.createSecureContext

About

An hapi authentication strategy to handle NTLM-authentication.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published