Classe : MCPAuth
La classe principale de la bibliothèque mcp-auth. Elle agit comme une fabrique et un registre pour créer des politiques d’authentification pour vos ressources protégées.
Elle est initialisée avec vos configurations serveur et fournit une méthode bearerAuth
pour générer un middleware Express pour l’authentification basée sur les jetons.
Exemple
Utilisation en mode resource server
C’est l’approche recommandée pour les nouvelles applications.
import express from 'express';
import { MCPAuth, fetchServerConfig } from 'mcp-auth';
const app = express();
const resourceIdentifier = 'https://api.example.com/notes';
const authServerConfig = await fetchServerConfig('https://auth.logto.io/oidc', { type: 'oidc' });
const mcpAuth = new MCPAuth({
// `protectedResources` peut être un seul objet de configuration ou un tableau de ceux-ci.
protectedResources: [
{
metadata: {
resource: resourceIdentifier,
authorizationServers: [authServerConfig],
scopesSupported: ['read:notes', 'write:notes'],
},
},
],
});
// Monter le routeur pour gérer les métadonnées des ressources protégées
app.use(mcpAuth.protectedResourceMetadataRouter());
// Protéger un point de terminaison API pour la ressource configurée
app.get(
'/notes',
mcpAuth.bearerAuth('jwt', {
resource: resourceIdentifier, // Spécifiez à quelle ressource ce point de terminaison appartient
audience: resourceIdentifier, // Facultatif, valider la revendication 'aud'
requiredScopes: ['read:notes'],
}),
(req, res) => {
console.log('Infos Auth :', req.auth);
res.json({ notes: [] });
},
);
Utilisation héritée en mode authorization server
(Obsolète)
Cette approche est prise en charge pour la rétrocompatibilité.
import express from 'express';
import { MCPAuth, fetchServerConfig } from 'mcp-auth';
const app = express();
const mcpAuth = new MCPAuth({
server: await fetchServerConfig(
'https://auth.logto.io/oidc',
{ type: 'oidc' }
),
});
// Monter le routeur pour gérer les métadonnées héritées du serveur d’autorisation
app.use(mcpAuth.delegatedRouter());
// Protéger un point de terminaison en utilisant la politique par défaut
app.get(
'/mcp',
mcpAuth.bearerAuth('jwt', { requiredScopes: ['read', 'write'] }),
(req, res) => {
console.log('Infos Auth :', req.auth);
// Traiter la requête MCP ici
},
);
Constructeurs
Constructeur
new MCPAuth(config: MCPAuthConfig): MCPAuth;
Crée une instance de MCPAuth. Elle valide toute la configuration en amont pour échouer rapidement en cas d’erreur.
Paramètres
config
La configuration d’authentification.
Retourne
MCPAuth
Propriétés
config
readonly config: MCPAuthConfig;
La configuration d’authentification.
Méthodes
bearerAuth()
Signature d’appel
bearerAuth(verifyAccessToken: VerifyAccessTokenFunction, config?: Omit<BearerAuthConfig, "issuer" | "verifyAccessToken">): RequestHandler;
Crée un gestionnaire d’authentification Bearer (middleware Express) qui vérifie le jeton d’accès dans l’en-tête
Authorization
de la requête.
Paramètres
verifyAccessToken
Une fonction qui vérifie le jeton d’accès. Elle doit accepter le jeton d’accès sous forme de chaîne et retourner une promesse (ou une valeur) qui se résout avec le résultat de la vérification.
Voir
VerifyAccessTokenFunction pour la définition du type de la fonction
verifyAccessToken
.
config?
Omit
<BearerAuthConfig
, "issuer"
| "verifyAccessToken"
>
Configuration optionnelle pour le gestionnaire d’authentification Bearer.
Voir
BearerAuthConfig pour les options de configuration disponibles (à l’exception de
verifyAccessToken
et issuer
).
Retourne
RequestHandler
Une fonction middleware Express qui vérifie le jeton d’accès et ajoute le
résultat de la vérification à l’objet requête (req.auth
).
Voir
handleBearerAuth pour les détails d’implémentation et les types étendus de l’objet
req.auth
(AuthInfo
).
Signature d’appel
bearerAuth(mode: "jwt", config?: Omit<BearerAuthConfig, "issuer" | "verifyAccessToken"> & VerifyJwtConfig): RequestHandler;
Crée un gestionnaire d’authentification Bearer (middleware Express) qui vérifie le jeton d’accès dans l’en-tête
Authorization
de la requête en utilisant un mode de vérification prédéfini.
En mode 'jwt'
, le gestionnaire créera une fonction de vérification JWT en utilisant le JWK Set
depuis l’URI JWKS du serveur d’autorisation.
Paramètres
mode
"jwt"
Le mode de vérification pour le jeton d’accès. Actuellement, seul 'jwt' est pris en charge.
Voir
VerifyAccessTokenMode pour les modes disponibles.
config?
Omit
<BearerAuthConfig
, "issuer"
| "verifyAccessToken"
> & VerifyJwtConfig
Configuration optionnelle pour le gestionnaire d’authentification Bearer, incluant les options de vérification JWT et les options du JWK Set distant.
Voir
- VerifyJwtConfig pour les options de configuration disponibles pour la vérification JWT.
- BearerAuthConfig pour les options de configuration disponibles (à l’exception de
verifyAccessToken
etissuer
).
Retourne
RequestHandler
Une fonction middleware Express qui vérifie le jeton d’accès et ajoute le
résultat de la vérification à l’objet requête (req.auth
).
Voir
handleBearerAuth pour les détails d’implémentation et les types étendus de l’objet
req.auth
(AuthInfo
).
Lève
si l’URI JWKS n’est pas fourni dans les métadonnées du serveur lors de
l’utilisation du mode 'jwt'
.
delegatedRouter()
delegatedRouter(): Router;
Crée un routeur délégué pour servir le point de terminaison hérité OAuth 2.0 Authorization Server Metadata
(/.well-known/oauth-authorization-server
) avec les métadonnées fournies à l’instance.
Retourne
Router
Un routeur qui sert le point de terminaison OAuth 2.0 Authorization Server Metadata avec les métadonnées fournies à l’instance.
Obsolète
Utilisez protectedResourceMetadataRouter à la place.
Exemple
import express from 'express';
import { MCPAuth } from 'mcp-auth';
const app = express();
const mcpAuth: MCPAuth; // Supposons que ceci est initialisé
app.use(mcpAuth.delegatedRouter());
Lève
Si appelé en mode resource server
.
protectedResourceMetadataRouter()
protectedResourceMetadataRouter(): Router;
Crée un routeur qui sert le point de terminaison OAuth 2.0 Protected Resource Metadata pour toutes les ressources configurées.
Ce routeur crée automatiquement les bons points de terminaison .well-known
pour chaque
identifiant de ressource fourni dans votre configuration.
Retourne
Router
Un routeur qui sert le point de terminaison OAuth 2.0 Protected Resource Metadata.
Lève
Si appelé en mode authorization server
.
Exemple
import express from 'express';
import { MCPAuth } from 'mcp-auth';
// Supposons que mcpAuth est initialisé avec une ou plusieurs configurations `protectedResources`
const mcpAuth: MCPAuth;
const app = express();
// Cela servira les métadonnées à `/.well-known/oauth-protected-resource/...`
// selon vos identifiants de ressources.
app.use(mcpAuth.protectedResourceMetadataRouter());