Aller au contenu principal

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​

MCPAuthConfig

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​

VerifyAccessTokenFunction

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 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).

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());