@akeraio/passport

Akera authentication strategy for Passport.

Usage no npm install needed!

<script type="module">
  import akeraioPassport from 'https://cdn.skypack.dev/@akeraio/passport';
</script>

README

passport-akera

Passport authentication strategy against Akera.io application server. This module is a Passport strategy wrapper for @akera/api

Install

npm install @akeraio/passport

Usage

Configure strategy

Typescript

import {Strategy as AkeraStrategy} from "@akeraio/passport"; 
import * as passport from "passport";

passport.use(new AkeraStrategy({
    server: {
      host: 'localhost',
      port: 8383,
      useSSL: true
    },
    ...
  }));

Javascript

const AkeraStrategy = require('@akeraio/passport').Strategy;

passport.use(new AkeraStrategy({
    server: {
      host: 'localhost',
      port: 8383,
      useSSL: true
    },
    ...
  }));
  • server: Akera.io settings. These are passed directly to @akera/api connect method. See its documentation for all available options.

    • host: Akera.io application server host name or ip address, e.g. localhost
    • port: Akera.io application server port number, e.g. 8383
    • useSSL: Akera.io application server SSL connection flag
  • usernameField: Field name where the user name is found, defaults to username

  • passwordField: Field name where the password is found, defaults to password

  • passReqToCallback: When true, req is the first argument to the verify callback (default: false):

      passport.use(new AkeraStrategy(..., function(req, user, done) {
          ...
          done(null, user);
        }
      ));
    

Note: you can pass a function instead of an object as options, see the example below

Authenticate requests

Use passport.authenticate(), specifying the 'akera' strategy, to authenticate requests.

authenticate() options

In addition to default authentication options the following flash message options are available for passport.authenticate():

  • badRequestMessage: missing username/password (default: 'Missing credentials')
  • invalidCredentials: InvalidCredentialsError (default: error returned by akera-api connect)

Express example

Typescript

import express                     from "express";
import passport                    from "passport";
import {json, urlencoded}          from "body-parser";
import {Strategy as AkeraStrategy} from "@akeraio/passport";

const OPTS = {
  server: {
    host: 'localhost',
    port: '8383',
    useSSL: true
  }
};

const app = express();

passport.use(new AkeraStrategy(OPTS));

app.use(json());
app.use(urlencoded({extended: false}));
app.use(passport.initialize());

app.post('/login', passport.authenticate('akera', {session: false}), function(req, res) {
  res.send({status: 'ok'});
});

app.listen(8080);

Javascript

const express      = require('express');
const passport     = require('passport');
const bodyParser   = require('body-parser');
const AkeraStrategy = require('passport-akera').Strategy;

const OPTS = {
  server: {
    host: 'localhost',
    port: '8383',
    useSSL: true
  }
};

const app = express();

passport.use(new AkeraStrategy(OPTS));

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(passport.initialize());

app.post('/login', passport.authenticate('akera', {session: false}), function(req, res) {
  res.send({status: 'ok'});
});

app.listen(8080);

License

MIT