@trigo/keycloak-api
TypeScript icon, indicating that this package has built-in type declarations

1.3.0 • Public • Published

Node.js Keycloak API Wrapper

Usage

const KeycloakApi = require('@trigo/keycloak-api');

const config = {
	authorizationEndpoint: 'https://<keycloak>/auth',
	clientId: '<clientId>',
	username: '<username>', // admin user
	password: '<password>',
	
};
const api = new KeycloakApi(config);
await api.waitForKeycloak(); // required 

Features

Ever function requires a function param called tokenProvider. It should return a access token.

Example

const tokenProvider = async () => {
    const res = await api.getToken({
        realm: 'master',
        grantType: 'password',
        clientId: 'admin-cli',
        username: '<username>',
        password: '<password>',
    });
    return res.data.access_token;
};

We will refer to this example in the following function calls.

Realms

createRealm

const {statusCode, data, header} = await api.createRealm({ realm: 'sparta', tokenProvider })

Users

getUsers

Get list of users. Optional query object as key value.

const query = {
	username: 'leonidas',
};

const {statusCode, data, header} = await api.getUsers({ realm: 'sparta', query, tokenProvider });

statusCode contains the HTTP status code. data array of Keycloak Users. header node-fetch style raw headers

createUser

Creates a new user.

const user = {
	username: 'leonidas',
};

const {statusCode, data, header} = await api.createUser({ realm: 'sparta', user, tokenProvider });

statusCode contains the HTTP status code. data the keycloak user object. header node-fetch style raw headers

Groups

getGroups

Returns all keycloak Groups

const {statusCode, data, header} = await api.getGroups({ realm: 'sparta', tokenProvider });

statusCode contains the HTTP status code. data array of keycloak groups. header node-fetch style raw headers

createGroup

Creates a new user group.

const group = {
	name: 'Spartiates',
	attributes: {
		'size': ['300'],
	},
};

const parentGroupId = 300; // Optional

const {statusCode, data, header} = await api.createGroup({ realm: 'sparta', group, parentGroupId, tokenProvider });

statusCode contains the HTTP status code. data the keycloak group object. header node-fetch style raw headers

deleteGroup

Deletes a user group by groupId

const {statusCode} = await api.deleteGroup({ realm: 'sparta', groupId: 300, tokenProvider });

statusCode contains the HTTP status code. header node-fetch style raw headers

makeGroupChildOfGroup

If group exists it sets the parent otherwise it creates the group as a child

const {statusCode} = await api.makeGroupChildOfGroup({ realm: 'sparta', parentGroupId: '42', group: { id: '43', name: 'child group' }, tokenProvider });

statusCode contains the HTTP status code. header node-fetch style raw headers

Readme

Keywords

none

Package Sidebar

Install

npm i @trigo/keycloak-api

Weekly Downloads

4

Version

1.3.0

License

ISC

Unpacked Size

139 kB

Total Files

124

Last publish

Collaborators

  • kelkes
  • trigo-admin
  • mdulghier