Ga naar inhoud

MCP beveiligen met OAuth 2.0

Albert Skibinski •
Jij krijgt een sleutel, en jij krijgt een sleutel, en jij krijgt een sleutel

In een eerder artikel kreeg ik MCP werkend om content op Jafix te beheren. Dat was behoorlijk cool, maar er waren problemen:

  • Het was niet erg veilig.
  • Het was behoorlijk lastig om in te stellen.

De afgelopen week heb ik gewerkt aan OAuth 2.0-ondersteuning voor de MCP-server van Jafix. Nu kan iedereen met een (gratis) Jafix-account deze als MCP-server toevoegen en er hetzelfde mee doen als op het platform als gewone gebruiker: je eigen tutorials maken, bijwerken en beheren.

Een aangepaste Claude.ai-connector voor Jafix

Bekijk op YouTube YouTube wordt pas geladen als je op de knop klikt.
Demo van Jafix MCP met Claude.ai

Let op: momenteel heb je een betaald Claude-account nodig om aangepaste connectors toe te voegen.

In plaats van API-keys of eigen tokens kunnen clients nu de vertrouwde OAuth-flow gebruiken om toegang te vragen, met duidelijke toestemmingsschermen en fijnmazige scopes. In de praktijk betekent dit:

  • Standaard OAuth-flows met PKCE voor veilige clientapps zonder wachtwoorden
  • Dynamic Client Registration (DCR), zodat nieuwe tools zichzelf automatisch kunnen registreren
  • Scopes gekoppeld aan Drupal-permissies, zodat autorisatie aansluit op je bestaande rechten
  • Publieke clients zonder secrets, een veiligere manier om apps zoals MCP Inspector te verbinden

Waarom dit belangrijk is

Voor ontwikkelaars neemt dit veel gedoe weg. In plaats van clients en tokens handmatig in te stellen, kunnen MCP-servers hun mogelijkheden bekendmaken via standaard metadata-endpoints (/.well-known/oauth-authorization-server), en kunnen clients zich direct registreren. Daarna zorgt de PKCE-flow voor veilige tokenuitwisseling, ook voor publieke clients zoals browsertools.

Voor beheerders betekent het ook meer controle. Scopes kunnen rechtstreeks aan Drupal-permissies worden gekoppeld, zodat er geen parallel universum van toegangsregels ontstaat. Gebruikers moeten nog steeds toestemming geven via een toestemmingsscherm en tokens kunnen naar behoefte worden ingetrokken of vervangen.

Voor eindgebruikers betekent het dat ze eenvoudig vanuit een client verbinding kunnen maken met een server, zonder gedoe met API-keys. Het enige wat je nodig hebt, is de URL van de MCP-server.

Vooruitkijken

OAuth-integratie maakt MCP een stuk geschikter voor productie. Het opent de deur voor breder gebruik, omdat beveiliging en autorisatie niet langer maatwerk zijn, maar worden afgehandeld via bekende standaarden.

Het maakt het ook makkelijker om je server in orchestratietools op te nemen. Maar bovenal verwacht ik dat alle AI-clients een mogelijkheid gaan bieden om MCP-servers te verbinden. Momenteel heb je vaak een betaald abonnement nodig en is toevoegen nog vooral voor gevorderde gebruikers, maar dat zal in de toekomst waarschijnlijk makkelijker worden. Claude heeft al een lijst met goedgekeurde connectors, zoals je in de video hierboven kon zien.

Ontwikkelaars

OAuth Dynamic Client Registration (DCR) was nieuw voor mij. De PHP League OAuth2-library ondersteunt DCR niet, dus dat moest ik zelf implementeren.

Als je met MCP en OAuth experimenteert, raad ik je aan om de OAuth-flow te proberen met MCP Inspector. Die heeft een erg handige tool die je door het debuggen van OAuth leidt:

Drupal MCP met OAuth 2.1

Bekijk op YouTube YouTube wordt pas geladen als je op de knop klikt.
Demo van MCP Inspector met OAuth
Albert Skibinski

Over de auteur

  • Albert Skibinski is een zelfstandig ontwikkelaar en co-founder van Jafix
  • Ik schrijf over web development, lange fietstochten en lekker eten!