0.4.2 • Published 1 month ago

@pebble-solutions/pebble-auth-client v0.4.2

Weekly downloads
-
License
GPL-3.0-or-later
Repository
-
Last release
1 month ago

Pebble Authentication Client for NodeJS

Introduction

This library offer a client for authenticate user and licence management written in TypeScript compatible with NodeJS modules.

Installation

npm install @pebble-solutions/pebble-auth-client

Usage

Configuration

Before you can work with the library, you must define to a system environment variable the URI were is stored the public Json Web Key Set (JWKS file).

This file will be requested and store temporary on your NodeJS API Server. Your server should be able to write on ./var/credentials/auth/jwks.json . If the file does not exist, it will be created.

If you start your NodeJS server directly from a terminal, run this command on your terminal before starting your NodeJS server :

export PBL_JWKS_REMOTE_URI=https://SERVER_URI/path/jwks.json

If you start your NodeJS server within a Docker container, you should add this line to your Dockefile :

ENV PBL_JWKS_REMOTE_URI=https://SERVER_URI/path/jwks.json

Test keys pair

!WARNING
These key files are not secured and must be used FOR TESTING PURPOSE ONLY on a local development environment !

JWKS URI (for PBL_JWKS_REMOTE_URI environment variable)

https://storage.googleapis.com/pebble-public-cdn/test_auth/jwks_test.json

Public and private keys used to sign a token

https://storage.googleapis.com/pebble-public-cdn/test_auth/public_test.pem

https://storage.googleapis.com/pebble-public-cdn/test_auth/private_test.pem

Authenticate with token string

import {auth} from "@pebble-solutions/pebble-auth-client"

try {
    const authToken = await auth("---A_valid_token---")
    
    console.log(authToken)
    console.log(authToken.getUser())
    console.log(authToken.getAuthenticatedLicence())
}
catch (e) {
    console.error(e.message)
}

Authenticate with HTTP Authorization header

This might work only if an Authorization header has been sent in the current client request. Authorization header must start with Bearer string followed by a valid JWT.

const { authFromHttpHeaders } = require('@pebble-solutions/pebble-auth-client')
const http = require('http')

const server = http.createServer(async (req, res) => {
    try {
        const authToken = await authFromHttpHeaders(req.headers)
        console.log(authToken)
        console.log(authToken.getUser())
        console.log(authToken.getAuthenticatedLicence())
        res.end("You are authenticated");
    }
    catch (e) {
        res.writeHead(401);
        res.end(e.message)
    }
});

server.listen(process.env.PORT || 3000)
0.4.2

1 month ago

0.4.1

4 months ago

0.4.0

4 months ago

0.3.0

4 months ago

0.3.2

4 months ago

0.3.1

4 months ago

0.2.7

5 months ago

0.2.6

5 months ago

0.2.5

5 months ago

0.2.4

6 months ago

0.2.3

6 months ago

0.2.2

6 months ago

0.2.1

6 months ago

0.2.0

6 months ago

0.1.1

6 months ago