You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

nestjs-api-keys

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nestjs-api-keys

A NestJS utility that allows API keys based security

1.1.5
Source
npmnpm
Version published
Weekly downloads
15
200%
Maintainers
1
Weekly downloads
 
Created
Source

NestJS API Keys

Node.js Package

A NestJS API keys utility which allows you to secure APIs using an API Key based system.

This library only works in APIs made with NestJS.

0. Installing

Install the package using:

npm i nestjs-api-keys

or

yarn add nestjs-api-keys

1. Setup

First, you need to register the ApiKeysModule. You can do that by going to your AppModule and calling the register static method of the ApiKeysModule class:

@Module({
  imports: [
    ApiKeysModule.register({
      apiKeys: [],
    }),
  ],
})
export class AppModule {}

In the apiKeys array you need to provide all available API Keys.

ApiKeysModule.register({
    apiKeys: [
        {
            name: 'For reading users',   // Descriptive name
            keys: ['supersecretapikey'], // API keys composing this key
            permissions: ['users.read'], // Permissions given to this key
        },
    ],
}),
  • name: allows you to provide a name to the API key for identification purposes (there is no functionality attached to the name).
  • keys: an array where you provide all keys that compose the API key. Having more than one Key allows you to switch keys without downtime.
  • permissions: an array where you place permissions as strings. Endpoints and controllers can require permissions, so you can assign them to api keys in here.

REMEMBER: it is recommended that you DON'T provide directly here these values in production. You should get keys from a .ENV file or any other secure source.

In production you should (for example):

ApiKeysModule.register({
    apiKeys: JSON.parse(process.env.API_KEYS_JSON_STRING),
}),

1.0. Extra options

  • apiKeyHeader: allows you to change the header name where API key is read. By default it is 'api-key'.

2. Protecting endpoints

You can secure any endpoint by using the ApiKeyGuard guard:

@UseGuards(
    ApiKeyGuard({
        permissions: ['users.read'],
    }),
)
@Get('users')
async getUsers() {
    // Fetch users
}

FAQs

Package last updated on 18 Nov 2024

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