Sur cette page
- Méthodes d'authentification
- Sessions de navigateur
- Jetons Bearer (OAuth 2.1)
- Flux OAuth 2.1
- 1. Enregistrement dynamique du client
- 2. Requête d'autorisation
- 3. Échange de jetons
- 4. Actualisation du jeton
- Portées
- Modèle d'autorisation
- Rôles
- Autorisations des rôles
- Points de terminaison de découverte
- Métadonnées du serveur d’autorisation OAuth (RFC 8414)
- Métadonnées de la ressource protégée (RFC 9728)
- Limitation du débit
Authentification et autorisation
MarkdownComment Glossia authentifie les utilisateurs et autorise l'accès à l'API.
Méthodes d'authentification
Glossia prend en charge deux méthodes d'authentification selon le contexte.
Sessions de navigateur
Lorsque vous vous connectez depuis l'interface web, Glossia utilise une authentification basée sur les sessions. Vous vous authentifiez auprès d'un fournisseur tiers (GitHub ou GitLab) à l'aide de la bibliothèque Assent. Une fois la connexion réussie, un cookie de session est défini et utilisé pour les requêtes suivantes.
Jetons Bearer (OAuth 2.1)
Pour accéder à l'API, notamment depuis l'interface en ligne de commande ou d'autres outils, Glossia implémente OAuth 2.1 avec le flux de code d'autorisation et PKCE. Les clients obtiennent un jeton Bearer et l'incluent dans l'en-tête Authorization :
Authorization: Bearer <access_token>
Flux OAuth 2.1
1. Enregistrement dynamique du client
Les clients s'enregistrent eux-mêmes en appelant POST /oauth/register avec leurs métadonnées. Cette procédure respecte la RFC 7591.
{
"client_name": "My Tool",
"redirect_uris": ["http://localhost:8080/callback"],
"grant_types": ["authorization_code"]
}
Le serveur renvoie client_id et client_secret.
2. Requête d'autorisation
Le client redirige l'utilisateur vers /oauth/authorize avec les paramètres PKCE :
GET /oauth/authorize?response_type=code&client_id=<id>&redirect_uri=<uri>&code_challenge=<challenge>&code_challenge_method=S256&state=<state>
PKCE est requis pour tous les clients. Seule la méthode de challenge S256 est prise en charge.
3. Échange de jetons
Une fois l'autorisation accordée par l'utilisateur, le client échange le code d'autorisation contre des jetons auprès de POST /oauth/token :
POST /oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=<code>&redirect_uri=<uri>&client_id=<id>&code_verifier=<verifier>
La réponse contient un jeton d'accès et, éventuellement, un jeton d'actualisation.
4. Actualisation du jeton
Lorsqu'un jeton d'accès expire, utilisez le jeton d'actualisation :
POST /oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&refresh_token=<token>&client_id=<id>&client_secret=<secret>
Portées
Les portées déterminent les actions qu'un jeton peut effectuer. Elles suivent le modèle object:action.
| Portée | Description |
|---|---|
user:read |
Lire les informations du profil utilisateur |
user:write |
Mettre à jour le profil utilisateur |
account:read |
Répertorier les comptes d'organisation auxquels vous avez accès |
organization:read |
Lire les informations des organisations et répertorier vos organisations |
organization:write |
Créer ou mettre à jour des organisations |
organization:delete |
Supprimer des organisations |
organization:admin |
Effectuer des actions administratives sur les organisations |
members:read |
Lire les membres et les invitations des organisations |
members:write |
Gérer les membres et les invitations des organisations |
project:read |
Lire les projets |
project:write |
Créer ou mettre à jour des projets |
project:admin |
Effectuer des actions administratives sur les projets |
project:delete |
Supprimer des projets |
voice:read |
Lire la configuration de la voix |
voice:write |
Créer ou mettre à jour la configuration de la voix |
voice:admin |
Effectuer des actions administratives sur la voix |
glossary:read |
Lire les entrées de terminologie |
glossary:write |
Créer ou mettre à jour les entrées de terminologie |
glossary:admin |
Gérer les paramètres de terminologie |
Modèle d'autorisation
Glossia applique deux niveaux de contrôle à l'API REST et au serveur MCP :
- Vérification de la portée : le jeton d'accès doit inclure la portée
object:actionrequise. - Politique au niveau de la ressource : l'utilisateur actuel doit être autorisé à accéder à la ressource concernée via
Glossia.Policy.
Les portées représentent la capacité maximale d'un jeton. Le système de politiques applique l'autorisation effective pour une ressource donnée.
Rôles
| Rôle | Description |
|---|---|
self |
L’utilisateur accédant à ses propres ressources |
organization_member |
Un membre de l’organisation propriétaire de la ressource |
organization_admin |
Un administrateur de l’organisation propriétaire de la ressource |
public_account |
Le compte est public (lecture seule) |
Autorisations des rôles
| Portée | self | organization_member | organization_admin | public_account |
|---|---|---|---|---|
user:read |
Oui | Oui | ||
user:write |
Oui | |||
account:read |
Oui | Oui | Oui | |
organization:read |
Oui | Oui | ||
organization:write |
Oui | |||
organization:delete |
Oui | |||
organization:admin |
Oui | |||
members:read |
Oui | Oui | ||
members:write |
Oui | |||
project:read |
Oui | Oui | Oui | |
project:write |
Oui | |||
project:admin |
Oui | |||
project:delete |
Oui | |||
voice:read |
Oui | Oui | Oui | |
voice:write |
Oui | |||
voice:admin |
Oui | |||
glossary:read |
Oui | Oui | ||
glossary:write |
Oui | |||
glossary:admin |
Oui |
Points de terminaison de découverte
Glossia publie des métadonnées à des URLs standard bien connues afin que les clients puissent découvrir automatiquement les points de terminaison.
Métadonnées du serveur d’autorisation OAuth (RFC 8414)
GET /.well-known/oauth-authorization-server
Renvoie l’émetteur, les points de terminaison, les portées prises en charge, les types d’autorisation et les méthodes de vérification du code.
Métadonnées de la ressource protégée (RFC 9728)
GET /.well-known/oauth-protected-resource
Renvoie l’identifiant de la ressource, les serveurs d’autorisation, les portées prises en charge et les méthodes d’utilisation des jetons au porteur.
Limitation du débit
Le débit des points de terminaison OAuth est limité par adresse IP :
| Point de terminaison | Limite |
|---|---|
POST /oauth/register |
5 requêtes par minute |
POST /oauth/token |
30 requêtes par minute |
POST /oauth/revoke |
30 requêtes par minute |
POST /oauth/introspect |
30 requêtes par minute |
Lorsque la limite de débit est atteinte, le serveur renvoie le code HTTP 429 (Trop de requêtes).
Glossia