Sto progettando un servizio di autorizzazione che verrà interrogato internamente da altri servizi pubblici che stanno recuperando un'intestazione Authorization
all'interno di una richiesta.REST - Quale verbo utilizzare per verificare l'autorizzazione
Questo servizio gestisce l'autorizzazione (una coppia di chiave pubblica (user_id) e chiave privata) e il suo compito è di rigenerare la firma (HMAC) - è l'unico servizio a conoscere la chiave privata -, quindi sembrava giusto per identificarlo come risorsa del server. Poi ho ritenuto che non v'è alcuna risorsa autorizzazione a utente, quindi ho finito con questo URI di base:
/user/:user_id/authorization
Ho poi progettato operazioni CRUD per gestire l'autorizzazione, creare quando si crea un nuovo utente, l'aggiornamento quando richiesto, leggere ed eliminare quando l'utente viene cancellato.
Nota: l'entità Utente è gestita da un altro servizio, sto solo utilizzando questo URI per passare in modo logico la chiave pubblica (poiché è strettamente correlata a un utente).
Non sono sicuro di come dovrei interrogare questo servizio da altri servizi per dire: "Ehi, questa chiave è giusta?" passando accanto a questa richiesta tutti i dati necessari per rigenerare la firma.
Quindi quello che serve è un modo per verificare l'autorizzazione in modo riposante
ho insegnato qualcosa come:
GET /user/:user_id/authorization?signature=SOMETHING&data=JSON-DATA-TO-REGENERATE-KEY
Ma forse, potremmo anche vedere per essere la creazione di una nuova risorsa di autorizzazione (anche se non viene restituito nulla, non è un sistema di token) rendendo così PUT o POST più adatto per questo scopo.
Qual è il tuo punto di vista? Qual è l'approccio giusto per gestire questo tipo di situazione?
Perché stai reinventando la ruota? Qualunque schema attuale non soddisfa le tue esigenze? Di base, Digest MD5, CERT, SPNEGO? –
Non penso che tu abbia capito cosa stavo chiedendo. Sto già utilizzando SHA1 per generare l'HMAC che sto chiedendo su cosa sia un modo riposante per inviare questa firma al servizio di autorizzazione (e ottenere una risposta booleana). I dati vengono inviati per consentire al servizio di calcolare l'HMAC. –
Sto progettando questo sistema dopo il meccanismo S3 perché nessuno degli standard è applicabile alle mie esigenze. –