1.0.9 • Published 6 years ago

hapi-ntlm v1.0.9

Weekly downloads
2
License
BSD-2-Clause
Repository
github
Last release
6 years ago

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

Nametypedescription
hostnamestringHostname of the Active Directory.
portstringPort of the Active Directory.
domainstringDefault domain if the DomainName-field cannot be parsed.
pathstringBase DN. not implemented yet
use_tlsbooleanIndicates wether to use TLS or not.
tls_optionsobjectAn options object that will be passed to
generateInfofunctionAn async function to generate extra user infotls.connect and tls.createSecureContext. Only required when using ldaps and the server's certificate is signed by a certificate authority not in Node's default list of CAs. (or use NODE_EXTRA_CA_CERTS environment variable)
tls_options.castring / array / BufferOverride the trusted CA certificates provided by Node. Refer to tls.createSecureContext
1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago