Uwierzytelnianie w interfejsie Web API Basic vs Bearer


89

Utworzyłem uwierzytelnianie oparte na JWT w mojej aplikacji interfejsu API sieci Web. Nie jestem w stanie określić różnicy między

  1. Podstawowy token
  2. Token okaziciela

Czy ktoś może mi pomóc?

Odpowiedzi:


117

Schematy uwierzytelniania Basic i Digest są przeznaczone do uwierzytelniania przy użyciu nazwy użytkownika i klucza tajnego (patrz RFC7616 i RFC7617 ).

Schemat uwierzytelniania okaziciela jest przeznaczony do uwierzytelniania przy użyciu tokenu i jest opisany w dokumencie RFC6750 . Nawet jeśli ten schemat pochodzi ze specyfikacji OAuth2, nadal możesz go używać w dowolnym innym kontekście, w którym tokeny są wymieniane między klientem a serwerem.

Jeśli chodzi o uwierzytelnianie JWT i ponieważ jest to token, najlepszym wyborem jest schemat uwierzytelniania okaziciela. Niemniej jednak nic nie stoi na przeszkodzie, aby skorzystać z niestandardowego schematu, który może pasować do Twoich wymagań.


35

Uwierzytelnianie podstawowe przesyła poświadczenia jako pary identyfikator użytkownika / hasło, zakodowane przy użyciu base64. Klient wysyła żądania HTTP zAuthorizationnagłówkiem zawierającym słowoBasicsłowo, po którym następuje spacja ibase64-encodedciąg nazwa użytkownika: hasło.

Autoryzacja: Podstawowa ZGVtbzpwQDU1dzByZA ==

wprowadź opis obrazu tutaj Uwaga: W przypadku uwierzytelniania podstawowego, ponieważ identyfikator użytkownika i hasło są przesyłane przez sieć w postaci zwykłego tekstu (kodowane są w standardzie base64, ale base64 to kodowanie odwracalne), podstawowy schemat uwierzytelniania nie jest bezpieczny. HTTPS / TLS powinien być używany w połączeniu z uwierzytelnianiem podstawowym.


Uwierzytelnianie okaziciela (zwane także uwierzytelnianiem tokenów ) obejmuje tokeny zabezpieczające zwane tokenami okaziciela. Nazwę „Uwierzytelnianie okaziciela” można rozumieć jako „ udzielenie dostępu okazicielowi tego tokena ”. Token okaziciela to tajemniczy ciąg znaków, zwykle generowany przez serwer w odpowiedzi na żądanie logowania. Klient musi wysłać ten token w nagłówku Authorization podczas wysyłania żądań do chronionych zasobów:

Autoryzacja: Bearer <token>

wprowadź opis obrazu tutaj

Uwaga: Podobnie jak w przypadku uwierzytelniania podstawowego, uwierzytelnianie nośnika powinno być używane tylko przez HTTPS (SSL) .

Aby uzyskać więcej informacji, link1 , link2


więc oba są autoryzacją, a nie autoryzacją. W pierwszym wysyłasz ciąg zakodowany w base64 i uzyskujesz autoryzację, podczas gdy w drugim odzyskujesz token i używasz go do dostępu do zasobów
— burza mózgów

jaka jest zaleta przekazywania tokena nad nazwą użytkownika / hasłem?
— Muhammad Umer

@MuhammadUmer możesz unieważnić tokeny, a także przyznać im szczegółowy dostęp (tj. Tylko dostęp do odczytu).
— Mihai

Znalazłem odpowiedź i było tak, że nie musisz czytać db z tokenem, możesz użyć krypto do walidacji tokena, najlepiej dla mikrousług, które nie mają stanu sesji współdzielonej, chociaż istnieje system równoważenia obciążenia, który może naprawić jednego użytkownika jedna usługa, ale nadal działa.
— Muhammad Umer
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.