1.0.22 • Published 4 years ago

authtoken v1.0.22

Weekly downloads
11
License
ISC
Repository
github
Last release
4 years ago

Authtoken

This is the easy way for add support to app key and tokens access to your REST Applications.

Powered by: Cesar Casas

Install

hostname$ npm install authtoken --save

Implement

Express.js

This is a Express.js example

const authtoken = require('authtoken');
const app = require('express')();

app.use(new authtoken({
  mongodb: dbInstance
}));
app.listen(8000);

app.get("/services", (req, res, next)=> res.json({ name: 'REST API', version: '1.0.0' }));
app.get("/exa1", (req, res, next)=> res.json({ name: 'exa1', version: '1.0.0' }));
app.get("/exa2", (req, res, next)=> res.json({ name: 'exa2', version: '1.0.0' }));

Create new API KEY.

Default collection: "keys". Example field:

{
    "_id" : ObjectId("5703e7392665bb1e424ba981"),
    "apikey" : "abc789",
    "secret" : "secretito", //secret token
    "ratelimit" : 7 //rate limit
}

Debug

hostname$ DEBUG=authtoken* node app.js

Settings

{
    mongodb: 'authtoken', // mongodb url connection
    startupMessage: 'AUTH SERVICE NOT READY!, RETURN IN FEW SECONDS!', // msg error
    redisConnection: '',// redis url connection
    collections: ['tokens', 'keys'], // collectiosn for tokens and keys
    refreshKeys: 10, // second refresh key
    rateLimit: 100, // default rate limit
    base: '/services', // base api url
    excludes:['/exa1', '/exa2'], // exclude directories
    forcelogin: false // is true, all request require login, if false, onlye need api key in header
  }

config redis

you can use redis sentinel, just pass like argument a array with {host, port} properties.

"redisConnection": [{host: '127.0.0.1', port: 26379},{host: '127.0.0.1', port: 26380}];

Methods

Using the header "tokenservice" for run methods into library.

login

Require 2 headers, "apikey" and "secret". The system return the header "status". If login ok, status header is "logged", else "error".

Example:

const https = require('https');
var options = {
  hostname: 'www.website.com',
  port: 80,
  path: '/',
  method: 'POST',
  headers: {
    'tokenservice': 'login',
    'apikey': "asdkkeb123kjk98365ben978h1bb4bja82ubb4889asdfn3n",
    'secret': "dk23ij8fhhhasd3oh9812b12d-12asdlk388hahsdkj3jlkk"
  }
};

var req = https.request(options, (res) => {
  console.log('statusCode: ', res.statusCode);
  console.log('headers: ', res.headers);

  res.on('data', (d) => {
    process.stdout.write(d);
  });
});
req.end();

req.on('error', (e) => {
  console.error(e);
});

TODO

  • Add logout
  • Add routes patterns
1.0.22

4 years ago

1.0.21

6 years ago

1.0.20

6 years ago

1.0.19

7 years ago

1.0.18

7 years ago

1.0.17

7 years ago

1.0.16

7 years ago

1.0.15

8 years ago

1.0.14

8 years ago

1.0.12

8 years ago

1.0.11

8 years ago

1.0.10

8 years ago

1.0.9

8 years ago

1.0.8

8 years ago

1.0.7

8 years ago

1.0.6

8 years ago

1.0.5

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago