---
title: "Référence d'API — @nodefony/security — keycloak"
source: docs/api/security/keycloak.md
url: https://nodefony.github.io/nodefony-core/docs/api/security/keycloak/
---


[Documentation](../../../) › [Référence d'API](../../) › [`@nodefony/security`](../) › keycloak

> Générée depuis les déclarations de types publiées de `@nodefony/security` **10.0.0-beta.5** : exactement ce que reçoit une application qui l'installe. Cette page n'existe dans aucun dépôt — pour la corriger, on corrige le TSDoc du code.

## `@nodefony/security`

`import { … } from "@nodefony/security"` — 10 symboles.

### Classes (2)

#### `KeycloakAdminClient`

```ts
class KeycloakAdminClient
```

Client de l'API d'administration d'UN realm Keycloak.

- `readonly realm: string` — Nom du realm administré.
- `readonly origin: string` — Origine du serveur (`https://hôte:port`).
- `constructor(options: IKeycloakAdminClientOptions)`
- `request(method: string, path: string, body?: unknown): Promise<Response>` — Un appel à l'API d'administration du realm, jeton joint.
- `getRealm(): Promise<Record<string, unknown>>` — La représentation du realm.
- `updateRealm(changes: Record<string, unknown>): Promise<void>` — Change des champs du realm — et eux seuls : Keycloak ne touche pas aux champs absents d'un `PUT` partiel.
- `applyLoginTheme(skin: LoginPageSkin): Promise<IKeycloakLoginThemeResult>` — Pose sur le realm le thème de connexion qui porte un habillage de `/login`.

#### `KeycloakAdminError`

```ts
class KeycloakAdminError extends Error
```

Refus ou échec d'un appel ; le message nomme la cause et le geste suivant.

- `readonly status: number | null`
- `constructor(message: string, status?: number | null)`

### Fonctions (3)

#### `keycloakAdminTarget`

```ts
function keycloakAdminTarget(config: ISecurityConfig, providerName?: string): IKeycloakAdminTarget
```

Le realm et le compte d'administration d'un fournisseur, lus dans la configuration de sécurité VALIDÉE.

#### `keycloakLoginThemeCheck`

```ts
function keycloakLoginThemeCheck(skin: LoginPageSkin): (html: string) => IOAuthCheck | null
```

La sonde « thème » du diagnostic d'un fournisseur : la page de Keycloak suit-elle l'habillage de `/login` ?

#### `readKeycloakLoginTheme`

```ts
function readKeycloakLoginTheme(html: string): string | null
```

Le thème de connexion qu'une page servie par Keycloak charge.

### Interfaces (4)

#### `IKeycloakAdminClientOptions`

```ts
interface IKeycloakAdminClientOptions extends IKeycloakAdminTarget
```

Ce que le client doit savoir.

- `readonly environment: string` — Environnement du kernel : tout autre que `development` est refusé.
- `readonly fetch?: typeof globalThis.fetch` — Transport (défaut : `fetch` global) — injecté par les tests.
- `readonly timeoutMs?: number` — Délai de chaque appel, en millisecondes (défaut 10 s).

#### `IKeycloakAdminCredentials`

```ts
interface IKeycloakAdminCredentials
```

Le compte d'administration du serveur Keycloak (realm `master`).

- `readonly username: string`
- `readonly password: string`

#### `IKeycloakAdminTarget`

```ts
interface IKeycloakAdminTarget
```

Le serveur à joindre et le compte qui l'administre.

- `readonly issuer: string` — Émetteur du fournisseur — l'adresse du realm (`https://…/realms/<nom>`).
- `readonly admin: IKeycloakAdminCredentials`

#### `IKeycloakLoginThemeResult`

```ts
interface IKeycloakLoginThemeResult
```

Ce que le geste a constaté et fait.

- `readonly realm: string`
- `readonly previous: string | null` — Thème du realm AVANT le geste ; `null` s'il n'en déclarait aucun.
- `readonly theme: string` — Thème que l'habillage demande.
- `readonly outcome: KeycloakLoginThemeOutcome`

### Types (1)

#### `KeycloakLoginThemeOutcome`

```ts
type KeycloakLoginThemeOutcome = "applied" | "unchanged" | "unmanaged"
```

Issue de `KeycloakAdminClient.applyLoginTheme` : - `applied` : le thème a changé ; - `unchanged` : le realm portait déjà ce thème ; - `unmanaged` : le realm porte un thème qui n'est pas de Nodefony (ou aucun) — il appartient à l'application, rien n'est touché.

---

[← Toutes les références d'API](../../)
