OAuth 2.1, scopes en tokens
Discovery-metadata, dynamische registratie, PKCE, scopes read, write en send, levensduur van tokens en intrekking.
De server volgt de MCP-autorisatiespecificatie: OAuth 2.1 met verplichte PKCE, metadata voor beschermde bron (RFC 9728) en autorisatieserver (RFC 8414), dynamische registratie (RFC 7591) en de parameter iss in het antwoord (RFC 9207).
Discovery
GET https://mcp.novadesko.com/.well-known/oauth-protected-resource
GET https://mcp.novadesko.com/.well-known/oauth-authorization-server| Veld | Waarde |
|---|---|
resource | https://mcp.novadesko.com (of https://mcp.novadesko.com/mcp volgens het aangeroepen adres) |
issuer | https://mcp.novadesko.com |
authorization_endpoint | https://web.novadesko.com/ai-oauth/authorize |
token_endpoint | https://mcp.novadesko.com/ai-oauth/token |
registration_endpoint | https://mcp.novadesko.com/ai-oauth/register |
revocation_endpoint | https://mcp.novadesko.com/ai-oauth/revoke |
grant_types_supported | authorization_code, refresh_token |
code_challenge_methods_supported | S256 |
token_endpoint_auth_methods_supported | none, client_secret_post, client_secret_basic |
scopes_supported | read, write, send |
authorization_response_iss_parameter_supported | true |
Het autorisatiescherm blijft op web.novadesko.com: het gebruikt de Novadesko-sessie van de gebruiker. Een oproep zonder token naar https://mcp.novadesko.com geeft:
HTTP/2 401
www-authenticate: Bearer resource_metadata="https://mcp.novadesko.com/.well-known/oauth-protected-resource", scope="read write send"
Dynamische registratie
POST https://mcp.novadesko.com/ai-oauth/register
Content-Type: application/json
{
"client_name": "My MCP client",
"redirect_uris": [
"https://client.example/callback"
],
"token_endpoint_auth_method": "none",
"grant_types": [
"authorization_code",
"refresh_token"
],
"response_types": [
"code"
]
}- 1 tot 10
redirect_uris, maximaal 500 tekens, zonder fragment#. - HTTPS verplicht, behalve
http://localhost,127.0.0.1en[::1]voor lokale clients. - Het antwoord bevat de
client_id(prefixndcl_). Een eventueel secret wordt gehasht opgeslagen (SHA-256).
Scopes
| Scope | Novadesko-scherm | Zichtbare tools |
|---|---|---|
read | Raadplegen (altijd toegekend) | get_*, search*, list_*, fetch, cancel_action |
write | Aanmaken en wijzigen (optioneel) | de tools prepare_* met scope write + confirm_action |
send | E-mails en sms versturen (optioneel) | prepare_email, prepare_reminder + confirm_action |
De gebruiker kan write of send uitvinken op het autorisatiescherm, ongeacht wat de client vraagt. tools/list geeft alleen de tools terug die de toegekende scopes toelaten.
Levensduur van tokens
| Element | Duur |
|---|---|
| Autorisatiecode | 10 minuten, eenmalig |
| Toegangstoken | 1 uur |
| Refresh-token | 30 dagen, vernieuwd bij elke refresh (rotatie) |
Intrekking
De client kan intrekken met POST https://mcp.novadesko.com/ai-oauth/revoke (RFC 7009). De gebruiker kan ook op Intrekken klikken in Novadesko, Integraties: het effect is onmiddellijk, de volgende oproep krijgt 401. Alle geheimen (tokens, codes) worden gehasht opgeslagen, nooit leesbaar.