New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@ssense/jwt-active-directory

Package Overview
Dependencies
Maintainers
9
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ssense/jwt-active-directory

Ssense JWT Active Directory Authenticator

  • 0.3.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
9
Created
Source

JWT - Active Directory

Authorization Middleware and Authenticator for Active Directory and JWT token

Build Status Coverage Status Latest Stable Version Known Vulnerabilities

Table of Contents

Ways of passing a token for validation

There are four ways to pass the token for validation: (1) in the Authorization header, (2) as a cookie, (3) as a POST parameter, and (4) as a URL query parameter. The middleware will look in those places in the order listed and return 401 if it can't find any valid token.

MethodFormat
Authorization HeaderAuthorization: Bearer <token>
Cookie"jwt_token": <token>
URL Query Parameter/protected?access_token=<token>
Body ParameterPOST access_token=<token>

Installation

npm install --save @ssense/jwt-active-directory

Constructing a token

const authenticator = new Authenticator({
    url: 'ldap://127.0.0.1:1389',
    baseDN: 'dc=domain,dc=com',
    username: 'auth@domain.com',
    //username: 'CN=Authenticator,OU=Special Users,DC=domain,DC=com',
    password: 'password',
    logging: {
        name: 'ActiveDirectory',
        streams: [
            {
                level: 'error',
                stream: process.stdout
            }
        ]
    }
});

authenticator.authenticate('user@domain.com', 'password')
.then(({auth, user, groups}) => {
    if (auth) {
        const token: string = authenticator.sign({user, groups}, 'no-so-secret-key', {
            expiresIn: '1 day'
        });

        // your script ...
    }
})
.catch((err) => {
    console.log(err);
});

or you can use authenticateAndSign(email: string, password: string, jwtKey: string, jwtOptions, jwtExtraClaims?: {})

authenticator.authenticateAndSign('user@domain.com', 'password', 'no-so-secret-key', {
    expiresIn: '1 day'
},
// Optional claims argument
{
    extra: 'payload options',
    foo: 'bar',
    hello: 'Worl!'
})
.then(({auth, user, groups, token}) => {
    console.log('auth', auth);
    console.log('user', user);
    console.log('groups', groups);
    console.log('token', token);
})
.catch((err) => {
    console.log(err);
});

Using middleware to validate token

import {authenticated} from 'jwt-active-directory';

// ... your code ...

app.get('*', authenticated({
    allowed: ['*', 'Group 1', 'Antoher Group Allowed'], // list of groups allowed to enter this route
    jwtKey: 'no-so-secret-key' // your jwt secret key
}), (req, res) => {
    // your code
    // access token with **req.token**
    // do what you want we the new generate token
});

Middleware default options

options = {
    allowed: [],
    jwtKey: null,
    queryKey: 'access_token',
    bodyKey: 'access_token',
    cookieKey: 'jwt_token',
    headerKey: 'Bearer',
    reqKey: 'token', // req.token
    validateGroupKey: 'cn'
};

Caveats

JWT validation depends only on validating the correct signature and that the token is unexpired.

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

Keywords

FAQs

Package last updated on 11 Jan 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc