Możesz tworzyć własne niestandardowe schematy uwierzytelniania, które używają Authorization:
nagłówka - na przykład tak działa OAuth .
Z reguły jeśli serwery lub serwery proxy nie rozumieją wartości standardowych nagłówków, zostawiają je w spokoju i ignorują. To tworzenie własnych kluczy nagłówków , które często mogą dawać nieoczekiwane rezultaty - wiele serwerów proxy usuwa nagłówki z nazwami, których nie rozpoznają.
To powiedziawszy, prawdopodobnie lepszym pomysłem jest użycie plików cookie do przesyłania tokena, a nie Authorization:
nagłówka, z tego prostego powodu, że pliki cookie zostały wyraźnie zaprojektowane do przenoszenia wartości niestandardowych, podczas gdy specyfikacja wbudowanych metod uwierzytelniania HTTP tak naprawdę nie mówi tak czy inaczej - jeśli chcesz zobaczyć, co dokładnie mówi, zajrzyj tutaj .
Inną kwestią jest to, że wiele bibliotek klienta HTTP ma wbudowaną obsługę uwierzytelniania Digest i Basic, ale może utrudnić życie przy próbie ustawienia wartości surowej w polu nagłówka, podczas gdy wszystkie zapewniają łatwą obsługę plików cookie i będą zezwalają na mniej więcej jakąkolwiek wartość w nich.
Authorization:
nagłówka) dotyczy domeny. Oznacza to, że jeśli ustawisz domenę pliku cookie na „ta domena” i ścieżkę do „/”, zakres ten będzie identyczny jak w przypadku uwierzytelniania HTTP. Jednak to naprawdę zależy od ciebie - ale jak wskazuje Julian Reschke, prawdopodobnie nie powinieneś definiować nowego schematu uwierzytelniania, chyba że tyfeel that you have something of generic use
- coś, co mogłoby zostać użyte w innej aplikacji.W przypadku zapytania CROSS ORIGIN przeczytaj to:
Zmierzyłem się z taką sytuacją i na początku zdecydowałem się użyć
Authorization
nagłówka, a później usunąłem go po rozwiązaniu następującego problemu.Authorization
Nagłówek jest uważany za niestandardowy nagłówek. Jeśli więc żądanie między domenami jestAutorization
wysyłane z ustawionym nagłówkiem, przeglądarka najpierw wysyła żądanie inspekcji wstępnej . Żądanie inspekcji wstępnej jest żądaniem HTTP metodą OPTIONS, to żądanie usuwa wszystkie parametry z żądania. Twój serwer musi odpowiedziećAccess-Control-Allow-Headers
nagłówkiem zawierającym wartość Twojego niestandardowego nagłówka (Authorization
nagłówka).Tak więc dla każdego żądania wysyłanego przez klienta (przeglądarkę) było wysyłane przez przeglądarkę dodatkowe żądanie HTTP (OPCJE). To pogorszyło wydajność mojego interfejsu API. Powinieneś sprawdzić, czy dodanie tego nie obniży wydajności. Aby obejść ten problem, wysyłam tokeny w parametrach http, co, jak wiem, nie jest najlepszym sposobem, ale nie mogłem pójść na kompromis z wydajnością.
źródło
Authorization token
(poufnych danych) dla mojej aplikacji. Z tego samego powodu nie powinniśmy wysyłać wrażliwych danych w GET, nie powinniśmy używać tokena autoryzacyjnego w params. Zgodnie z w3 w3.org/Protocols/rfc2616/rfc2616-sec15.html#sec15.1.3 „Protokół HTTP NIE POWINIEN używać formularzy opartych na GET do przesyłania poufnych danych”.Jest to trochę przestarzałe, ale mogą być inni szukający odpowiedzi na to samo pytanie. Powinieneś pomyśleć o tym, jakie przestrzenie ochronne mają sens dla twoich interfejsów API. Na przykład możesz chcieć zidentyfikować i uwierzytelnić dostęp aplikacji klienckich do interfejsów API, aby ograniczyć ich użycie do znanych, zarejestrowanych aplikacji klienckich. W takim przypadku możesz użyć
Basic
schemat uwierzytelniania z identyfikatorem klienta jako identyfikatorem użytkownika i wspólnym sekretem klienta jako hasłem. Nie potrzebujesz zastrzeżonych schematów uwierzytelniania, po prostu jasno określ jeden (e), które mają być używane przez klientów dla każdej przestrzeni ochrony. Wolę tylko jeden dla każdej przestrzeni ochrony, ale standardy HTTP dopuszczają zarówno wiele schematów uwierzytelniania w każdej odpowiedzi nagłówka WWW-Authenticate, jak i wiele nagłówków WWW-Authenticate w każdej odpowiedzi; będzie to mylące dla klientów API, których opcji użyć. Bądź spójny i przejrzysty, wtedy będą używane Twoje interfejsy API.źródło
Nie radziłbym używać uwierzytelniania HTTP z niestandardowymi nazwami schematów. Jeśli czujesz, że masz coś z zastosowania ogólnego, to można zdefiniować nowy system, choć. Szczegółowe informacje można znaleźć pod adresem http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p7-auth-latest.html#rfc.section.2.3 .
źródło
Prosimy spróbować poniżej na listonoszu: -
Przykładowa sekcja nagłówka działa dla mnie.
Autoryzacja: JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyIkX18iOnsic3RyaWN0TW9kZSI6dHJ1ZSwiZ2V0dGVycyI6e30sIndhc1BvcHVsYXRlZCI6ZmFsc2UsImFjdGl2ZVBhdGhzIjp7InBhdGhzIjp7InBhc3N3b3JkIjoiaW5pdCIsImVtYWlsIjoiaW5pdCIsIl9fdiI6ImluaXQiLCJfaWQiOiJpbml0In0sInN0YXRlcyI6eyJpZ25vcmUiOnt9LCJkZWZhdWx0Ijp7fSwiaW5pdCI6eyJfX3YiOnRydWUsInBhc3N3b3JkIjp0cnVlLCJlbWFpbCI6dHJ1ZSwiX2lkIjp0cnVlfSwibW9kaWZ5Ijp7fSwicmVxdWlyZSI6e319LCJzdGF0ZU5hbWVzIjpbInJlcXVpcmUiLCJtb2RpZnkiLCJpbml0IiwiZGVmYXVsdCIsImlnbm9yZSJdfSwiZW1pdHRlciI6eyJkb21haW4iOm51bGwsIl9ldmVudHMiOnt9LCJfZXZlbnRzQ291bnQiOjAsIl9tYXhMaXN0ZW5lcnMiOjB9fSwiaXNOZXciOmZhbHNlLCJfZG9jIjp7Il9fdiI6MCwicGFzc3dvcmQiOiIkMmEkMTAkdTAybWNnWHFjWVQvdE41MlkzZ2l3dVROd3ZMWW9ZTlFXejlUcThyaDIwR09IMlhHY3haZWUiLCJlbWFpbCI6Im1hZGFuLmRhbGUxQGdtYWlsLmNvbSIsIl9pZCI6IjU5MjEzYzYyYWM2ODZlMGMyNzI2MjgzMiJ9LCJfcHJlcyI6eyIkX19vcmlnaW5hbF9zYXZlIjpbbnVsbCxudWxsLG51bGxdLCIkX19vcmlnaW5hbF92YWxpZGF0ZSI6W251bGxdLCIkX19vcmlnaW5hbF9yZW1vdmUiOltudWxsXX0sIl9wb3N0cyI6eyIkX19vcmlnaW5hbF9zYXZlIjpbXSwiJF9fb3JpZ2luYWxfdmFsaWRhdGUiOltdLCIkX19vcmlnaW5hbF9yZW1vdmUiOltdfSwiaWF0IjoxNDk1MzUwNzA5LCJleHAiOjE0OTUzNjA3ODl9.BkyB0LjKB4FIsCtnM5FcpcBLvKed_j7rCCxZddwiYnU
źródło
that article full of misleadings
,a lot of his points does not make sense
itp w jakiś sposób (to znaczy, to chyba coś poza komentarzu tutaj). Może mógłbyś napisać odpowiedź lub wpis na blogu? Porównanie argumentów byłoby naprawdę interesujące.