2. Componenti del messaggio HTTP (HTTP Message Components)
2. Componenti del messaggio HTTP (HTTP Message Components)
Per consentire a firmatari e verificatori di stabilire quali componenti sono coperti da una firma, questo documento definisce identificatori di componente per i componenti coperti da una firma del messaggio HTTP, un insieme di regole per derivare e canonicalizzare i valori associati a questi identificatori dal messaggio HTTP, e il mezzo per combinare questi valori canonicalizzati in una base della firma (signature base).
Il contesto della firma (signature context) per derivare questi valori DEVE essere accessibile sia al firmatario sia al verificatore del messaggio. Il contesto DEVE essere lo stesso per tutti i componenti in una data firma. Ad esempio, sarebbe un errore usare la stringa di query grezza per il componente derivato @query ma parametri di query e di modulo combinati per il componente derivato @query-param. Per ulteriori considerazioni sul contesto dei componenti del messaggio, si veda la Sezione 7.4.3.
Un identificatore di componente è composto da un nome di componente e da eventuali parametri associati a quel nome. Ogni nome di componente è o un nome di campo HTTP (Sezione 2.1) o un nome di componente derivato registrato (Sezione 2.2). I possibili parametri per un identificatore di componente dipendono dall'identificatore stesso. Il registro "HTTP Signature Component Parameters", che cataloga tutti i possibili parametri, è definito nella Sezione 6.5.
All'interno di un singolo elenco di componenti coperti, ogni identificatore di componente DEVE comparire una sola volta. Un identificatore di componente è distinto da un altro se il nome del componente differisce o se differisce qualsiasi parametro per lo stesso nome di componente. PIÙ identificatori di componente con lo stesso nome di componente POSSONO essere inclusi se hanno parametri che li rendono distinti, come "foo";bar e "foo";baz. L'ordine dei parametri DEVE essere preservato durante l'elaborazione di un identificatore di componente (ad esempio durante l'analisi in fase di verifica), ma l'ordine dei parametri non è significativo quando si confrontano due identificatori di componente per controlli di uguaglianza. Cioè "foo";bar;baz non può stare nello stesso messaggio di "foo";baz;bar, poiché questi due identificatori sono equivalenti, ma un sistema che elabora una forma non PUÒ trasformarla nell'altra.
Il valore del componente associato a un identificatore di componente è definito dall'identificatore stesso. I valori dei componenti NON DEVONO contenere caratteri di newline (\n). Alcuni componenti del messaggio HTTP possono subire trasformazioni che cambiano il valore bit a bit senza alterare il significato del valore del componente (ad esempio quando si combinano valori di campo). I valori dei componenti del messaggio devono quindi essere canonicalizzati prima della firma, per garantire che una firma possa essere verificata nonostante tali trasformazioni degli intermediari. Questo documento definisce regole per ogni identificatore di componente che trasformano il valore del componente associato in tale forma canonicalizzata.
Le sezioni seguenti definiscono i nomi degli identificatori di componente, i loro parametri, i valori associati e le regole di canonicalizzazione per i loro valori. Il metodo per combinare i componenti del messaggio nella base della firma è definito nella Sezione 2.5.