Le chiavi API o anche i token rientrano nella categoria dei meccanismi di autenticazione e autorizzazione diretti, poiché concedono l'accesso alle risorse esposte delle API REST. Tali meccanismi diretti possono essere utilizzati nei casi di utilizzo della delega.
Per ottenere l'accesso a una risorsa oa un insieme di risorse esposte dagli endpoint REST, è necessario controllare i privilegi del richiedente in base alla sua identità. Il primo passo del flusso di lavoro è quindi la verifica dell'identità mediante l' autenticazione della richiesta; Il passo successivo è il controllo dell'identità rispetto a un insieme di regole definite per autorizzare il livello di accesso (cioè lettura, scrittura o lettura / scrittura). Una volta completati i suddetti passaggi, un'ulteriore preoccupazione tipica è la velocità di richiesta consentita , ovvero quante richieste al secondo è consentito al richiedente di eseguire nei confronti delle risorse date.
OAuth (Open Authorization) è un protocollo standard per l' accesso delegato , spesso utilizzato dalle principali società Internet per concedere l'accesso senza fornire la password. Come è chiaro, OAuth è il protocollo che soddisfa le preoccupazioni sopra menzionate: autenticazione e autorizzazione fornendo un accesso delegato sicuro alle risorse del server per conto del proprietario della risorsa. Si basa sul meccanismo dei token di accesso che consente alla terza parte di accedere alla risorsa gestita dal server per conto del proprietario della risorsa. Ad esempio, ServiceX desidera accedere all'account Google di John Smith per conto di John, una volta che John ha autorizzato la delega; A ServiceX verrà quindi emesso un token basato sul tempo per accedere ai dettagli dell'account Google, molto probabilmente solo in lettura.
Il concetto di chiave API è molto simile al token OAuth descritto sopra. La differenza principale consiste nell'assenza di delega: l'Utente richiede direttamente la Chiave al fornitore del servizio per successive interazioni programmatiche. Anche il caso della chiave API è basato sul tempo: la chiave come token OAuth è soggetta a un leasing o periodo di scadenza. Come ulteriore aspetto, sia la chiave che il token possono essere soggetti a limitazione della velocità per contratto di servizio, ovvero può essere servito solo un determinato numero di richieste al secondo.
Per ricapitolare, in realtà non c'è una vera differenza tra i tradizionali meccanismi di autenticazione e autorizzazione e le versioni basate su chiave / token. Il paradigma è leggermente diverso però: invece di continuare a riutilizzare le credenziali ad ogni interazione tra client e server, viene utilizzato un Key / Token di supporto che rende l'esperienza di interazione complessiva più fluida e probabilmente più sicura (spesso, seguendo lo standard JWT , Chiavi e I token sono firmati digitalmente dal server per evitare la creazione).
- Autenticazione e autorizzazione dirette : protocolli basati su chiave come variante delle versioni tradizionali basate su credenziali.
- Autenticazione e autorizzazione delegate : come i protocolli basati su OAuth, che a loro volta utilizzano i token, ancora una volta come variante delle versioni basate sulle credenziali (l'obiettivo generale non è divulgare la password a terze parti).
Entrambe le categorie utilizzano un flusso di lavoro di verifica dell'identità tradizionale per la primissima interazione con il server che possiede le risorse interessate.