Niestandardowe użycie nagłówka autoryzacji w interfejsie API REST

10

Buduję interfejs REST, w którym klienci są uwierzytelniani przy użyciu certyfikatów klienta. Klient w tym przypadku nie jest indywidualnym użytkownikiem, ale jakąś warstwą prezentacji. Użytkownicy są uwierzytelniani przy użyciu niestandardowego podejścia, a warstwa prezentacji odpowiada za prawidłowe wykonanie (uwaga: wiem, że to nie jest właściwe podejście, ale interfejs API nie jest publiczny).

Chciałbym przekazać nazwę użytkownika dla każdego żądania (nie hasło), ale nie jestem pewien, gdzie to zrobić. Czy dobrym pomysłem byłoby użycie nagłówka Autoryzacja?

Matsen75
źródło

Odpowiedzi:

21

Użycie nagłówka Autoryzacja wydaje się właściwą rzeczą. To jest cały cel nagłówka autoryzacji.

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

Pole nagłówka „Autoryzacja” umożliwia agentowi użytkownika uwierzytelnienie się na serwerze źródłowym - zwykle, ale niekoniecznie, po otrzymaniu odpowiedzi 401 (nieautoryzowane). Jego wartość składa się z poświadczeń zawierających informacje uwierzytelniające agenta użytkownika dla dziedziny żądanego zasobu.

Jeśli masz własny dokument uwierzytelniający, udokumentuj go, ale nie musisz wymyślać koła ponownie.

Zach Dennis
źródło
3
To nie tylko wydaje jak słusznie, to jest słuszne. ( Badałem to przez cały dzień) Sekcja 4.1 w RFC 7235 wyraźnie demonstruje użycie niestandardowego schematu „Newauth” w „Na przykład”, wraz ze standardowym schematem „Basic” pozwalającym klientowi na wybór dowolnego schematu . To powiedziawszy, jeśli używasz „standardowego” schematu, powinieneś go używać poprawnie. Odpowiedź Zacha jest poprawna, a Filipa niepoprawna .
Stephen P
3

Nie polecam niestandardowego użycia standardowego nagłówka HTTP. Przede wszystkim dlatego, że może wprowadzać w błąd innych programistów, którzy wiedzą, w jaki sposób Authoriziationnagłówek ma być wykorzystywany w uwierzytelnianiu HTTP, ale także w celu uniknięcia potencjalnych problemów z innymi częściami stosu posiadającymi sprzeczną świadomość tego samego nagłówka żądania.

W każdym razie nic nie stoi na przeszkodzie, aby użyć niestandardowego, niestandardowego X-Authorization-Usernagłówka, specjalnie do swoich celów.

Filip Dupanović
źródło
100% uzgodnione. Jeśli chcesz zrobić coś niestandardowego, właśnie do tego X-służą prefiksy. Jeśli zamierzasz użyć standardowego nagłówka, nie używaj go do niczego niezwykłego lub nieoczekiwanego.
Carson63000,
2
Pomyślałem, że powinienem wspomnieć, że „X-” jest przestarzałe: stackoverflow.com/questions/3561381/…
Matsen75
Czy ta odpowiedź oznacza, że ​​Amazon S3 robi to źle? docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
Tom Lianza
4
-1. Jak wspomniał Zach Dennis, w przeciwieństwie do większości innych nagłówków HTTP, nagłówek autoryzacji został zaprojektowany z myślą o rozszerzeniu i istnieje jasno określony sposób definiowania własnego schematu autoryzacji. W łupinie orzechów upewnij się, że używasz niestandardowej nazwy schematu autoryzacji.
Lie Ryan,