Klasse: MCPAuth
Die Hauptklasse der mcp-auth-Bibliothek. Sie fungiert als Factory und Registry zur Erstellung von Authentifizierungsrichtlinien für deine geschützten Ressourcen.
Sie wird mit deinen Serverkonfigurationen initialisiert und stellt eine bearerAuth-Methode bereit, um Express-Middleware für tokenbasierte Authentifizierung zu generieren.
Beispiel
Verwendung im Resource Server-Modus
Dies ist der empfohlene Ansatz für neue Anwendungen.
Option 1: Discovery-Konfiguration (empfohlen für Edge-Runtimes)
Verwende dies, wenn Metadaten bei Bedarf abgerufen werden sollen. Dies ist besonders nützlich für Edge-Runtimes wie Cloudflare Workers, bei denen asynchrone Fetch-Operationen auf Top-Level-Ebene nicht erlaubt sind.
import express from 'express';
import { MCPAuth } from 'mcp-auth';
const app = express();
const resourceIdentifier = 'https://api.example.com/notes';
const mcpAuth = new MCPAuth({
protectedResources: [
{
metadata: {
resource: resourceIdentifier,
// Nur issuer und type angeben – Metadaten werden bei der ersten Anfrage abgerufen
authorizationServers: [{ issuer: 'https://auth.logto.io/oidc', type: 'oidc' }],
scopesSupported: ['read:notes', 'write:notes'],
},
},
],
});
Option 2: Resolved-Konfiguration (vorgefetchte Metadaten)
Verwende dies, wenn du Metadaten beim Start abrufen und validieren möchtest.
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: [
{
metadata: {
resource: resourceIdentifier,
authorizationServers: [authServerConfig],
scopesSupported: ['read:notes', 'write:notes'],
},
},
],
});
Verwendung der Middleware
// Router für Protected Resource Metadata einbinden
app.use(mcpAuth.protectedResourceMetadataRouter());
// Einen API-Endpunkt für die konfigurierte Ressource schützen
app.get(
'/notes',
mcpAuth.bearerAuth('jwt', {
resource: resourceIdentifier, // Gibt an, zu welcher Ressource dieser Endpunkt gehört
audience: resourceIdentifier, // Optional: das 'aud'-Claim validieren
requiredScopes: ['read:notes'],
}),
(req, res) => {
console.log('Auth info:', req.auth);
res.json({ notes: [] });
},
);
Legacy-Verwendung im Authorization Server-Modus (Veraltet)
Dieser Ansatz wird aus Gründen der Abwärtskompatibilität unterstützt.
import express from 'express';
import { MCPAuth } from 'mcp-auth';
const app = express();
const mcpAuth = new MCPAuth({
// Discovery-Konfiguration – Metadaten werden bei Bedarf abgerufen
server: { issuer: 'https://auth.logto.io/oidc', type: 'oidc' },
});
// Router für Legacy Authorization Server Metadata einbinden
app.use(mcpAuth.delegatedRouter());
// Einen Endpunkt mit der Standardrichtlinie schützen
app.get(
'/mcp',
mcpAuth.bearerAuth('jwt', { requiredScopes: ['read', 'write'] }),
(req, res) => {
console.log('Auth info:', req.auth);
// Hier die MCP-Anfrage bearbeiten
},
);
Konstruktoren
Konstruktor
new MCPAuth(config: MCPAuthConfig): MCPAuth;
Erstellt eine Instanz von MCPAuth. Die gesamte Konfiguration wird im Voraus validiert, um Fehler frühzeitig zu erkennen.
Parameter
config
Die Authentifizierungskonfiguration.
Rückgabewert
MCPAuth
Eigenschaften
config
readonly config: MCPAuthConfig;
Die Authentifizierungskonfiguration.
Methoden
bearerAuth()
Aufrufsignatur
bearerAuth(verifyAccessToken: VerifyAccessTokenFunction, config?: Omit<BearerAuthConfig, "issuer" | "verifyAccessToken">): RequestHandler;
Erstellt einen Bearer-Auth-Handler (Express-Middleware), der das Zugangstoken (Access token) im
Authorization-Header der Anfrage überprüft.
Parameter
verifyAccessToken
Eine Funktion, die das Zugangstoken (Access token) überprüft. Sie sollte das Zugangstoken als String akzeptieren und ein Promise (oder einen Wert) zurückgeben, das/die das Überprüfungsergebnis liefert.
Siehe
VerifyAccessTokenFunction für die Typdefinition der
verifyAccessToken-Funktion.
config?
Omit<BearerAuthConfig, "issuer" | "verifyAccessToken">
Optionale Konfiguration für den Bearer-Auth-Handler.
Siehe
BearerAuthConfig für die verfügbaren Konfigurationsoptionen (ohne
verifyAccessToken und issuer).
Rückgabewert
RequestHandler
Eine Express-Middleware-Funktion, die das Zugangstoken (Access token) überprüft und das
Überprüfungsergebnis dem Request-Objekt (req.auth) hinzufügt.
Siehe
handleBearerAuth für die Implementierungsdetails und die erweiterten Typen des
req.auth (AuthInfo) Objekts.
Aufrufsignatur
bearerAuth(mode: "jwt", config?: Omit<BearerAuthConfig, "issuer" | "verifyAccessToken"> & VerifyJwtConfig): RequestHandler;
Erstellt einen Bearer-Auth-Handler (Express-Middleware), der das Zugangstoken (Access token) im
Authorization-Header der Anfrage mit einem vordefinierten Verifizierungsmodus überprüft.
Im 'jwt'-Modus erstellt der Handler eine JWT-Überprüfungsfunktion unter Verwendung des JWK-Sets
von der JWKS-URI des Authorization Servers.
Parameter
mode
"jwt"
Der Verifizierungsmodus für das Zugangstoken (Access token). Derzeit wird nur 'jwt' unterstützt.
Siehe
VerifyAccessTokenMode für die verfügbaren Modi.
config?
Omit<BearerAuthConfig, "issuer" | "verifyAccessToken"> & VerifyJwtConfig
Optionale Konfiguration für den Bearer-Auth-Handler, einschließlich JWT-Überprüfungsoptionen und Remote-JWK-Set-Optionen.
Siehe
- VerifyJwtConfig für die verfügbaren Konfigurationsoptionen für die JWT- Überprüfung.
- BearerAuthConfig für die verfügbaren Konfigurationsoptionen (ohne
verifyAccessTokenundissuer).
Rückgabewert
RequestHandler
Eine Express-Middleware-Funktion, die das Zugangstoken (Access token) überprüft und das
Überprüfungsergebnis dem Request-Objekt (req.auth) hinzufügt.
Siehe
handleBearerAuth für die Implementierungsdetails und die erweiterten Typen des
req.auth (AuthInfo) Objekts.
Wirft
wenn die JWKS-URI in den Server-Metadaten nicht angegeben ist, wenn
der 'jwt'-Modus verwendet wird.
delegatedRouter()
delegatedRouter(): Router;
Erstellt einen Delegated Router, um den veralteten OAuth 2.0 Authorization Server Metadata Endpoint
(/.well-known/oauth-authorization-server) mit den der Instanz bereitgestellten Metadaten bereitzustellen.
Rückgabewert
Router
Ein Router, der den OAuth 2.0 Authorization Server Metadata Endpoint mit den der Instanz bereitgestellten Metadaten bereitstellt.
Veraltet
Verwende stattdessen protectedResourceMetadataRouter.
Beispiel
import express from 'express';
import { MCPAuth } from 'mcp-auth';
const app = express();
const mcpAuth: MCPAuth; // Angenommen, dies ist initialisiert
app.use(mcpAuth.delegatedRouter());
Wirft
Wenn im Resource Server-Modus aufgerufen.
protectedResourceMetadataRouter()
protectedResourceMetadataRouter(): Router;
Erstellt einen Router, der den OAuth 2.0 Protected Resource Metadata Endpoint für alle konfigurierten Ressourcen bereitstellt.
Dieser Router erstellt automatisch die korrekten .well-known-Endpunkte für jede
Ressourcenkennung, die in deiner Konfiguration angegeben ist.
Rückgabewert
Router
Ein Router, der den OAuth 2.0 Protected Resource Metadata Endpoint bereitstellt.
Wirft
Wenn im Authorization Server-Modus aufgerufen.
Beispiel
import express from 'express';
import { MCPAuth } from 'mcp-auth';
// Angenommen, mcpAuth ist mit einer oder mehreren `protectedResources`-Konfigurationen initialisiert
const mcpAuth: MCPAuth;
const app = express();
// Dies stellt Metadaten unter `/.well-known/oauth-protected-resource/...` bereit
// basierend auf deinen Ressourcenkennungen.
app.use(mcpAuth.protectedResourceMetadataRouter());