Klucze API, a nawet Tokeny, należą do kategorii mechanizmów bezpośredniego uwierzytelniania i autoryzacji, ponieważ zapewniają dostęp do ujawnionych zasobów interfejsów API REST. Takie bezpośrednie mechanizmy można wykorzystać w przypadkach użycia delegacji.
Aby uzyskać dostęp do zasobu lub zestawu zasobów udostępnianych przez punkty końcowe REST, należy sprawdzić uprawnienia żądającego zgodnie z jego tożsamością. Pierwszym krokiem przepływu pracy jest następnie weryfikacja tożsamości poprzez uwierzytelnienie żądania; Kolejnym krokiem jest sprawdzenie tożsamości z zestawem zdefiniowanych reguł autoryzacji poziomu dostępu (tj. odczyt, zapis lub odczyt / zapis). Po wykonaniu wspomnianych kroków typową dalszą troską jest dozwolona szybkość żądań , co oznacza, ile żądań na sekundę żądający może wykonać w odniesieniu do danego zasobu (zasobów).
OAuth (Open Authorization) to standardowy protokół dostępu delegowanego , często używany przez duże firmy internetowe do przyznawania dostępu bez podawania hasła. Jak widać, OAuth jest protokołem, który spełnia powyższe wymagania: Uwierzytelnianie i Autoryzacja poprzez zapewnienie bezpiecznego, delegowanego dostępu do zasobów serwera w imieniu właściciela zasobów. Opiera się na mechanizmie Access Tokens, które pozwalają stronie trzeciej uzyskać dostęp do zasobu zarządzanego przez serwer w imieniu właściciela zasobu. Na przykład ServiceX chce uzyskać dostęp do konta Google Johna Smitha w imieniu Johna, gdy John autoryzuje przekazanie; ServiceX otrzyma następnie token czasowy umożliwiający dostęp do szczegółów konta Google, najprawdopodobniej tylko do odczytu.
Koncepcja klucza API jest bardzo podobna do opisanego powyżej tokena OAuth. Podstawowa różnica polega na braku delegacji: Użytkownik zwraca się bezpośrednio do usługodawcy o Klucz do kolejnych interakcji programowych. Przypadek klucza API jest również oparty na czasie: klucz jako token OAuth podlega dzierżawie czasowej lub okresowi wygaśnięcia. Dodatkowym aspektem jest to, że zarówno Klucz, jak i Token mogą podlegać ograniczeniu szybkości w umowie o świadczenie usług, tj. Obsłużyć można tylko określoną liczbę żądań na sekundę.
Podsumowując, w rzeczywistości nie ma rzeczywistej różnicy między tradycyjnymi mechanizmami uwierzytelniania i autoryzacji a wersjami opartymi na kluczu / tokenie. Paradygmat jest jednak nieco inny: zamiast ponownego wykorzystywania poświadczeń przy każdej interakcji między klientem a serwerem, używany jest klucz / token wsparcia, który sprawia, że ogólna interakcja jest płynniejsza i prawdopodobnie bezpieczniejsza (często zgodnie ze standardem JWT , Kluczami i Tokeny są podpisywane cyfrowo przez serwer, aby uniknąć tworzenia).
- Bezpośrednie uwierzytelnianie i autoryzacja : protokoły oparte na kluczach jako wariant tradycyjnych wersji opartych na poświadczeniach.
- Delegowane uwierzytelnianie i autoryzacja : podobnie jak protokoły oparte na OAuth, które z kolei używają tokenów, ponownie jako wariant wersji opartych na poświadczeniach (ogólnym celem nie jest ujawnienie hasła żadnej stronie trzeciej).
Obie kategorie używają tradycyjnego przepływu pracy weryfikacji tożsamości przy pierwszej interakcji z serwerem będącym właścicielem zainteresowanych zasobów.