@dekproject/keycloak

1.0.4 • Public • Published

@dekproject/keycloak

Keycloak interface plugin for DEK

What does this plugin do?

  • Create a basic connection with Keycloak
  • Use express-session to create session

What is Keycloak?

For more information access: https://www.keycloak.org/about.html

Instalation

To install the bootstrap we recommend using the CLI

$ npm i -g @dekproject/cli
$ dek install keycloak

Config

  • Access the administrative panel of Keycloak, create a new realm
  • Already connected to the new realm, access the clients option and create a new client
  • In the new client settings, look for the Calid Redirect URIs option, add '*', and save
  • In the Installation tab, select the Keycloak format OIDC JSON
  • create the keycloak.json file in the root directory of the application and paste the settings

sample

{
    "realm": "myrealm",
    "auth-server-url": "http://localhost:8080/auth",
    "ssl-required": "external",
    "resource": "test",
    "public-client": true,
    "confidential-port": 0
}

Usage

Using direct

$ npm i @dekproject/scope
import express from "express";
import session from "express-session";
import cookieParser from "cookie-parser";
import bodyParser from "body-parser";

import { $, plugins, keycloak, memoryStore } from "@dekproject/scope";

(async () => {
    await plugins("");

    $.set("app", express());
    $.app.use(bodyParser.urlencoded({ extended: false }));
    $.app.use(bodyParser.json());

    const PORT = process.env.PORT || 5555;

    $.wait("keycloak").then(async () => {
        $.app.use( cookieParser() );

        $.app.use(session({
            secret: 'secret',
            resave: false,
            saveUninitialized: true,
            store: memoryStore
        }));

        $.app.use( keycloak.middleware( { logout: '/logout' } ));

        $.app.get('/', (req, res) => { res.send("insecure content").end(); });

        $.app.get('/protect', keycloak.protect(), (req, res) => {
            res.send("protected content").end();
        });

        $.app.listen(PORT, () => {
            console.log(`App listening on port ${PORT}!`);
        });
    });
})();

Using in the standard DEK skeleton

import session from "express-session";
import { $, app, keycloak, memoryStore } from "@dekproject/scope";
import routes from "@dekproject/routes";

$.wait(["app", "keycloak"]).then(() => {
    $.app.use(session({
        secret: 'secret',
        resave: false,
        saveUninitialized: true,
        store: memoryStore
    }));

    $.app.use( keycloak.middleware( { logout: '/logout' } ));

    $.app.get('/', (req, res) => { res.send("insecure content").end(); });

    $.app.get('/protect', keycloak.protect(), (req, res) => {
        res.send("protected content").end();
    });

    $.app.listen(PORT, () => {
        console.log(`App listening on port ${PORT}!`);
    });
});

Readme

Keywords

Package Sidebar

Install

npm i @dekproject/keycloak

Weekly Downloads

1

Version

1.0.4

License

MIT

Unpacked Size

10.1 kB

Total Files

10

Last publish

Collaborators

  • gislainyvelasco
  • andrehrf