@tchabana/keycloak-admin-api-js-sdk
v1.0.6
Published
SDK JavaScript/TypeScript de l'ATD pour l'API Admin de Keycloak
Maintainers
Readme
@atd/keycloak-admin-api-js-sdk
Un SDK JavaScript/TypeScript pour interagir avec l'API Admin de Keycloak, développé par l'Agence Togo Digital (ATD).
Fonctionnalités
- Gestion complète des clients Keycloak
- Administration des utilisateurs et des groupes
- Gestion des rôles et des permissions
- Interface TypeScript prête pour l'autocomplétion
- Support des dernières versions de Keycloak (21+)
Prérequis
- Node.js (version 16 ou supérieure recommandée)
- Keycloak (testé avec version 21+)
- Docker (optionnel - pour lancer Keycloak localement)
Installation
npm install @digitaltg/keycloak-admin-api-js-sdk
# ou
yarn add @digitaltg/keycloak-admin-api-js-sdk
Configuration
Lancer Keycloak avec Docker
docker compose up --buildIdentifiants par défaut :
URL : http://localhost:8080
Utilisateur :
adminMot de passe :
admin
Utilisation
Obtenir un token admin
async function getAdminToken(): Promise<string> {
const response = await axios.post(
`http://localhost:8080/realms/master/protocol/openid-connect/token`,
new URLSearchParams({
client_id: 'admin-cli',
username: "admin",
password: "admin",
grant_type: "password",
}),
{
headers: { "Content-Type": "application/x-www-form-urlencoded" },
}
);
return response.data.access_token;
}Exemples d'utilisation
Gestion des clients
import { ClientsApi, ClientRepresentationDto } from '@digitaltg/keycloak-admin-api-js-sdk';
const clientApi = new ClientsApi(config);
// Créer un client
const newClient: ClientRepresentationDto = {
name: 'Mon Client',
description: 'Description du client',
enabled: true,
protocol: "openid-connect",
publicClient: true,
clientId: 'mon-client-id',
redirectUris: ["http://localhost:3000/*"]
};
const response = await clientApi.adminRealmsRealmClientsPost('master', newClient);
Exemples complets
Des exemples fonctionnels sont disponibles dans le dossier sample/ :
npx ts-node sample/userApi.sample.ts
npx ts-node sample/clientApi.sample.ts
npx ts-node sample/roleApi.sample.ts