OAuth 2.1, Scopes und Tokens
Discovery-Metadaten, dynamische Registrierung, PKCE, Scopes read, write und send, Token-Laufzeiten und Widerruf.
Der Server folgt der MCP-Autorisierungsspezifikation: OAuth 2.1 mit verpflichtendem PKCE, Metadaten der geschützten Ressource (RFC 9728) und des Autorisierungsservers (RFC 8414), dynamische Registrierung (RFC 7591) und Parameter iss in der Antwort (RFC 9207).
Discovery
GET https://mcp.novadesko.com/.well-known/oauth-protected-resource
GET https://mcp.novadesko.com/.well-known/oauth-authorization-server| Feld | Wert |
|---|---|
resource | https://mcp.novadesko.com (oder https://mcp.novadesko.com/mcp je nach aufgerufener Adresse) |
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 |
Der Autorisierungsbildschirm bleibt auf web.novadesko.com: er nutzt die Novadesko-Sitzung des Nutzers. Ein Aufruf ohne Token an https://mcp.novadesko.com liefert:
HTTP/2 401
www-authenticate: Bearer resource_metadata="https://mcp.novadesko.com/.well-known/oauth-protected-resource", scope="read write send"
Dynamische Registrierung
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 bis 10
redirect_uris, höchstens 500 Zeichen, ohne Fragment#. - HTTPS Pflicht, außer
http://localhost,127.0.0.1und[::1]für lokale Clients. - Die Antwort enthält die
client_id(Präfixndcl_). Ein etwaiges Secret wird gehasht gespeichert (SHA-256).
Scopes
| Scope | Novadesko-Bildschirm | Sichtbare Werkzeuge |
|---|---|---|
read | Lesen (immer gewährt) | get_*, search*, list_*, fetch, cancel_action |
write | Erstellen und Ändern (optional) | Werkzeuge prepare_* mit Scope write + confirm_action |
send | E-Mails und SMS senden (optional) | prepare_email, prepare_reminder + confirm_action |
Der Nutzer kann write oder send auf dem Autorisierungsbildschirm abwählen, unabhängig von der Anfrage des Clients. tools/list liefert nur die durch die gewährten Scopes erlaubten Werkzeuge.
Token-Laufzeiten
| Element | Laufzeit |
|---|---|
| Autorisierungscode | 10 Minuten, einmalig |
| Zugriffstoken | 1 Stunde |
| Refresh-Token | 30 Tage, bei jedem Refresh erneuert (Rotation) |
Widerruf
Der Client kann mit POST https://mcp.novadesko.com/ai-oauth/revoke widerrufen (RFC 7009). Der Nutzer kann auch in Novadesko, Integrationen, auf Widerrufen klicken: die Wirkung ist sofort, der nächste Aufruf erhält 401. Alle Geheimnisse (Tokens, Codes) werden gehasht gespeichert, nie im Klartext.