Uso personalizzato dell'intestazione di autorizzazione in un'API REST


10

Sto creando un API REST in cui i client vengono autenticati utilizzando i certificati client. Un client in questo caso non è un singolo utente, ma una sorta di livello di presentazione. Gli utenti vengono autenticati utilizzando un approccio personalizzato ed è responsabilità del livello di presentazione verificare che ciò avvenga correttamente (nota: so che questo non è l'approccio corretto, ma l'API non è pubblica).

Vorrei passare il nome utente per ogni richiesta (non la password), ma non sono sicuro di dove farlo. Sarebbe una buona idea usare l'intestazione dell'autorizzazione?

Risposte:


21

L'uso dell'intestazione di autorizzazione sembra la cosa giusta da fare. È l'intero scopo dell'intestazione dell'autorizzazione.

Da http://tools.ietf.org/html/rfc7235#section-4.2 :

Il campo di intestazione "Autorizzazione" consente a un agente utente di autenticarsi con un server di origine, in genere, ma non necessariamente, dopo aver ricevuto una risposta 401 (non autorizzata). Il suo valore è costituito da credenziali contenenti le informazioni di autenticazione dell'agente utente per il regno della risorsa richiesta.

Se hai il tuo schema di autenticazione, documentalo, ma non è necessario reinventare la ruota.


3
Non si limita sembra come la cosa giusta, che è la cosa giusta. (Ho studiato tutto il giorno) La Sezione 4.1 nella RFC 7235 dimostra espressamente l'uso di uno schema personalizzato "Newauth" in "Ad esempio", insieme a uno schema standard "Base" che consente al cliente di utilizzare la scelta di entrambi gli schemi . Detto questo, se stai usando uno schema "standard", dovresti usarlo correttamente. La risposta di Zach è corretta e quella di Filip non è corretta .
Stephen P,

3

Non consiglierei di fare un uso non standard di un'intestazione HTTP standard. Principalmente perché può essere fuorviante per altri sviluppatori che sanno come Authoriziationusare l' intestazione nell'autenticazione HTTP, ma anche per evitare potenziali problemi con altre parti dello stack che hanno una conoscenza contrastante della stessa intestazione della richiesta.

In ogni caso, non c'è nulla che ti impedisca di utilizzare X-Authorization-Userun'intestazione personalizzata, non standard , specificamente per i tuoi scopi.


100% concordato. Se vuoi fare qualcosa di personalizzato, ecco a cosa X-servono le intestazioni con prefisso. Se hai intenzione di usare un'intestazione standard, non usarla per qualcosa di insolito o inaspettato.
Carson63000,

2
Proprio pensato che avrei dovuto dire che la "X" è stato deprecato: stackoverflow.com/questions/3561381/...
Matsen75

Per questa risposta, significa che Amazon S3 sta sbagliando? docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
Tom Lianza

4
-1. Come menzionato da Zach Dennis, a differenza della maggior parte delle altre intestazioni HTTP, l'intestazione di autorizzazione è progettata per essere estesa e esiste un modo chiaramente specificato su come definire il proprio schema di autorizzazione. In una shell nut, assicurati di utilizzare un nome di schema di autorizzazione personalizzato.
Lie Ryan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.