
# Serveur OAuth

Au-delà de la consommation de connexions sociales (voir [Stratégies](/fr/docs/auth-strategies)), Sovrium peut agir **en tant que serveur d'autorisation OAuth 2.1 / OpenID Connect 1.0** — émettant des jetons d'accès et de rafraîchissement pour les applications en aval et les clients IA/MCP qui s'authentifient auprès de votre référentiel d'identités Sovrium.

C'est ainsi que Sovrium devient le fournisseur d'identité d'une flotte d'applications : une instance Sovrium détient les utilisateurs, et d'autres services lui délèguent la connexion.

## Activation

Les points de terminaison du serveur OAuth sont **montés automatiquement dès que `auth` est configuré** — il n'y a rien à activer dans le schéma.

```yaml
auth:
  strategies:
    - type: emailAndPassword
  # OAuth-server endpoints mount automatically under /api/auth/oauth2/* once auth is configured.
```

:::callout
**Aucun réglage de schéma (pour l'instant).** Les durées de vie des jetons et autres réglages relèvent de l'opérateur et sont régis par des valeurs par défaut et des variables d'environnement, pas par des champs `app.auth`. Un futur bloc `app.auth.oauthServer.{...}` pourra exposer certains réglages une fois le câblage des routes stabilisé et que nous saurons quels paramètres les auteurs de schémas souhaitent réellement. Sans `auth` configuré, toutes les routes `/api/auth/*` renvoient `404` — il n'y a aucune identité à autoriser.
:::

## Points de terminaison

Le serveur d'autorisation expose la surface standard OAuth 2.1 / OIDC sous `/api/auth/oauth2/*`, plus des documents de découverte aux chemins well-known.

| Méthode | Chemin                                    | Rôle                                                                    |
| ------- | ----------------------------------------- | ----------------------------------------------------------------------- |
| `GET`   | `/.well-known/oauth-authorization-server` | Métadonnées du serveur d'autorisation RFC 8414.                         |
| `GET`   | `/.well-known/openid-configuration`       | Métadonnées OIDC Discovery 1.0.                                         |
| `GET`   | `/.well-known/jwks.json`                  | JSON Web Key Set — clés publiques pour la vérification des jetons.      |
| `POST`  | `/api/auth/oauth2/register`               | Enregistrement dynamique de client RFC 7591.                            |
| `GET`   | `/api/auth/oauth2/authorize`              | Point de terminaison d'autorisation (PKCE-S256 requis).                 |
| `POST`  | `/api/auth/oauth2/consent`                | Accusé de réception du consentement de l'utilisateur.                   |
| `POST`  | `/api/auth/oauth2/continue`               | Reprise après sélection de compte / post-connexion.                     |
| `POST`  | `/api/auth/oauth2/token`                  | Point de terminaison de jeton (`authorization_code` + `refresh_token`). |
| `GET`   | `/api/auth/oauth2/userinfo`               | Revendications OIDC UserInfo pour le jeton d'accès.                     |
| `POST`  | `/api/auth/oauth2/introspect`             | Introspection de jeton RFC 7662.                                        |
| `POST`  | `/api/auth/oauth2/revoke`                 | Révocation de jeton RFC 7009.                                           |

## Valeurs par défaut

Sovrium règle le serveur d'autorisation pour l'auto-hébergement et l'usage par des clients IA dès le départ :

| Paramètre                                 | Par défaut           | Pourquoi                                                                                                |
| ----------------------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------- |
| Enregistrement dynamique de client        | Activé               | Les clients MCP (Claude Desktop, ChatGPT Dev Mode) s'enregistrent eux-mêmes sans action de l'opérateur. |
| Durée de vie du jeton d'accès             | 1 heure              | Standard de l'industrie.                                                                                |
| Durée de vie du jeton de rafraîchissement | 30 jours             | Standard de l'industrie.                                                                                |
| Page de connexion                         | `/login`             | Page du moteur Sovrium.                                                                                 |
| Page de consentement                      | `/oauth/consent`     | Page du moteur Sovrium.                                                                                 |
| PKCE                                      | Requis (S256)        | OAuth 2.1 impose PKCE pour le flux de code d'autorisation.                                              |
| Signature des jetons                      | Clés EdDSA rotatives | `id_token` et jetons d'accès signés publiés via le point de terminaison JWKS.                           |

## Clients MCP & IA

L'enregistrement dynamique de client est activé spécifiquement pour que les assistants IA et les clients MCP puissent s'enregistrer eux-mêmes et obtenir des jetons, puis appeler les tables exposées via MCP de votre application (soumises au même [RBAC](/fr/docs/auth-roles-rbac) et aux mêmes [permissions de table](/fr/docs/table-permissions) que tout autre appelant). Cela permet à un client IA d'agir au nom d'un utilisateur réel, avec le même accès que cet utilisateur aurait dans l'interface.

## Pages associées

- [Stratégies](/fr/docs/auth-strategies) — Sovrium en tant que _client_ OAuth (connexion sociale), la direction inverse.
- [Rôles & RBAC](/fr/docs/auth-roles-rbac) — le modèle d'accès auquel les jetons sont liés.
- [Permissions de table](/fr/docs/table-permissions) — ce qu'un jeton autorisé peut atteindre.
- [Variables d'environnement](/fr/docs/env-vars) — `AUTH_SECRET` (signature des jetons) et `BASE_URL` (URL d'émetteur / de découverte).
