Aller au contenu
Novadesko Documentation
Français
Ouvrir l'application

OAuth 2.1, portées et jetons

Métadonnées de découverte, enregistrement dynamique, PKCE, portées read, write et send, durée de vie des jetons et révocation.

Le serveur suit la spécification d'autorisation MCP : OAuth 2.1 avec PKCE obligatoire, métadonnées de ressource protégée (RFC 9728) et de serveur d'autorisation (RFC 8414), enregistrement dynamique (RFC 7591) et paramètre iss dans la réponse (RFC 9207).

Découverte

GET https://mcp.novadesko.com/.well-known/oauth-protected-resource
GET https://mcp.novadesko.com/.well-known/oauth-authorization-server
ChampValeur
resourcehttps://mcp.novadesko.com (ou https://mcp.novadesko.com/mcp selon l'adresse appelée)
issuerhttps://mcp.novadesko.com
authorization_endpointhttps://web.novadesko.com/ai-oauth/authorize
token_endpointhttps://mcp.novadesko.com/ai-oauth/token
registration_endpointhttps://mcp.novadesko.com/ai-oauth/register
revocation_endpointhttps://mcp.novadesko.com/ai-oauth/revoke
grant_types_supportedauthorization_code, refresh_token
code_challenge_methods_supportedS256
token_endpoint_auth_methods_supportednone, client_secret_post, client_secret_basic
scopes_supportedread, write, send
authorization_response_iss_parameter_supportedtrue

L'écran d'autorisation reste sur web.novadesko.com : il utilise la session Novadesko de l'utilisateur. Un appel sans jeton à https://mcp.novadesko.com renvoie :

HTTP/2 401
www-authenticate: Bearer resource_metadata="https://mcp.novadesko.com/.well-known/oauth-protected-resource", scope="read write send"

Enregistrement dynamique

POST https://mcp.novadesko.com/ai-oauth/register
Content-Type: application/json

{
  "client_name": "Mon client MCP",
  "redirect_uris": [
    "https://client.example/callback"
  ],
  "token_endpoint_auth_method": "none",
  "grant_types": [
    "authorization_code",
    "refresh_token"
  ],
  "response_types": [
    "code"
  ]
}
  • 1 à 10 redirect_uris, 500 caractères au plus, sans fragment #.
  • HTTPS obligatoire, sauf http://localhost, 127.0.0.1 et [::1] pour les clients locaux.
  • La réponse contient le client_id (préfixe ndcl_). Un secret éventuel est stocké haché (SHA-256).

Portées

PortéeÉcran NovadeskoOutils visibles
readConsultation (toujours accordée)get_*, search*, list_*, fetch, cancel_action
writeCréation et modification (facultatif)les outils prepare_* de portée write + confirm_action
sendEnvoi de mails et SMS (facultatif)prepare_email, prepare_reminder + confirm_action

L'utilisateur peut décocher write ou send sur l'écran d'autorisation, quelle que soit la demande du client. tools/list ne renvoie que les outils permis par les portées accordées.

Durée de vie des jetons

ÉlémentDurée
Code d'autorisation10 minutes, usage unique
Jeton d'accès1 heure
Jeton de rafraîchissement30 jours, renouvelé à chaque rafraîchissement (rotation)

Révocation

Le client peut révoquer avec POST https://mcp.novadesko.com/ai-oauth/revoke (RFC 7009). L'utilisateur peut aussi cliquer sur Révoquer dans Novadesko, Intégrations : l'effet est immédiat, le prochain appel reçoit 401. Tous les secrets (jetons, codes) sont stockés hachés, jamais en clair.

Voir aussi