Metody autoryzacji API
W tym artykule zgłębimy trzy powszechne mechanizmy autoryzacji API: klucze API, podstawową autoryzację oraz tokeny OAuth JWT. Na końcu omówimy, jak Logto może pomóc Ci chronić Twoje API za pomocą tokenów OAuth JWT.
W tym artykule zgłębimy trzy powszechne mechanizmy autoryzacji API: klucze API, podstawową autoryzację oraz tokeny OAuth JWT. Na końcu omówimy, jak Logto może pomóc Ci chronić Twoje API za pomocą tokenów OAuth JWT.
W dzisiejszym świecie, API są kręgosłupem nowoczesnych aplikacji. Są one głównym sposobem na dostęp do danych i funkcji z usług backendu. API umożliwiają różnym systemom oprogramowania z różnych źródeł komunikację i wymianę danych, dzięki czemu są niezbędne dla biznesu. Jednakże API są również częstym celem ataków. Potrzeba ochrony API jest silniejsza niż kiedykolwiek.
Ochrona API to proces zabezpieczania API przed nieautoryzowanym dostępem, nadużyciem i atakami. Jest to krytyczny element każdej strategii API. W tym artykule zgłębimy trzy powszechne mechanizmy ochrony API: klucze API, podstawową autoryzację oraz tokeny OAuth JWT. Na końcu pokażemy również, jak Logto chroni Twoje API za pomocą tokenów OAuth JWT.
Klucz API to najbardziej prosty i powszechnie stosowany sposób zabezpieczania API. Klucz API to długi ciąg znaków generowany przez dostawcę API i udostępniany autoryzowanym użytkownikom. Ten klucz musi być dołączony do nagłówka żądania podczas dostępu do API. Klucze API są proste i skuteczne w podstawowych wymaganiach dotyczących bezpieczeństwa. Na przykład popularne usługi, takie jak Google Maps API i AWS, udostępniają klucze API do kontroli dostępu i monitorowania użycia. Jednakże mają one ograniczenia pod względem bezpieczeństwa. Często są używane do komunikacji maszyna-maszyna.
e.g.
Podstawowa autoryzacja to kolejna powszechna metoda zabezpieczania API. Jest to prosty schemat autoryzacji wbudowany w protokół HTTP. Polega na przesłaniu nazwy użytkownika i hasła w nagłówku żądania. Serwer następnie weryfikuje poświadczenia i zwraca żądany zasób, jeśli są one prawidłowe. Na przykład wiele aplikacji internetowych i API RESTful używa podstawowej autoryzacji jako szybkiej i łatwej metody autoryzacji użytkowników. Podstawowa autoryzacja jest bardziej bezpieczna niż klucze API, ponieważ używa nazwy użytkownika i hasła zamiast statycznego klucza. Niemniej jednak nadal nie jest wystarczająco bezpieczna dla danych wrażliwych, gdyż dane poświadczeń są przesyłane w postaci niezaszyfrowanej, co sprawia, że są podatne na przechwycenie. Podstawowa autoryzacja jest odpowiednia dla systemów wewnętrznych, gdzie połączenie sieciowe jest bezpieczne, np. komunikacja maszyna-maszyna.
e.g.
lub
JSON Web Token (JWT), zdefiniowany przez RFC 7519, jest otwartym standardem do bezpiecznego przekazywania informacji między stronami jako obiekt JSON. Jest on powszechnie stosowany w autoryzacji i uwierzytelnianiu w aplikacjach internetowych i API.
Podpisany token JWT ma następujący format:
Składa się z trzech części oddzielonych .: nagłówka, ładunku i podpisu.
Oto przykład tokenu JWT:
OAuth to kompleksowy otwarty standard do zabezpieczania API oraz do delegacji dostępu, powszechnie stosowany jako sposób na umożliwienie użytkownikom przekazywania witrynom lub aplikacjom dostępu do ich informacji na innych witrynach bez podawania haseł.
W połączeniu z JWT, tokeny OAuth JWT oferują solidne rozwiązanie bezpieczeństwa. Zamiast przekazywać wrażliwe informacje takie jak nazwy użytkowników i hasła przy każdym żądaniu, tokeny OAuth JWT są wydawane autoryzowanym klientom po pomyślnym uwierzytelnieniu. Te tokeny zawierają informacje o użytkowniku i jego uprawnieniach. Dodatkowo tokeny JWT są cyfrowo podpisane, co zapewnia odporność na manipulacje, i mogą wygasnąć, co zapewnia dodatkową warstwę bezpieczeństwa.
Jedną z kluczowych zalet tokenów OAuth JWT jest ich elastyczność. Mogą być używane w różnych typach aplikacji, w tym aplikacjach internetowych i mobilnych, rozwiązaniach jednokrotnego logowania i innych. Na przykład główne platformy społecznościowe, takie jak Facebook, Twitter i LinkedIn, używają tokenów OAuth JWT do uwierzytelniania użytkowników i umożliwienia aplikacjom zewnętrznym bezpiecznego dostępu do danych użytkowników.
Wybór metody uwierzytelniania zależy od specyficznych wymagań i kwestii bezpieczeństwa aplikacji. Klucze API są proste, ale mniej bezpieczne, podstawowa autoryzacja oferuje większe bezpieczeństwo, ale brakuje jej funkcji tożsamości użytkownika, natomiast tokeny OAuth JWT zapewniają solidne bezpieczeństwo i funkcje tożsamości użytkownika, ale zwiększają złożoność we wdrożeniu i zarządzaniu.
Logto zapewnia prosty i bezpieczny sposób ochrony Twojego API za pomocą tokenów OAuth JWT. Obsługuje zarówno standardy OAuth 2.0, jak i OpenID Connect (OIDC), pozwalając Ci wybrać metodę uwierzytelniania najlepiej pasującą do Twoich potrzeb. Możesz użyć przepływu client_credentials do komunikacji maszyna-maszyna oraz przepływu authorization_code do aplikacji internetowych.
Logto używa przepływu client_credentials dla aplikacji typu komunikacja maszyna-maszyna. Ten przepływ jest odpowiedni dla komunikacji na serwerze backend, gdzie klient jest zaufanym klientem, który może bezpiecznie przechowywać poświadczenia klienta. Jest również znany jako „OAuth dwunożny”, ponieważ nie obejmuje użytkownika. Poświadczenia klienta są używane bezpośrednio jako przyznanie autoryzacji do uzyskania tokenu dostępu.
Proces integracji jest prosty i łatwy do zrealizowania:
Proszę sprawdzić naszą dokumentację integracji maszyna-maszyna dla więcej szczegółów.
Dla klientów publicznych, takich jak aplikacje internetowe, Logto używa przepływu authorization_code do uwierzytelniania użytkowników. Ten przepływ jest odpowiedni dla aplikacji internetowych, gdzie klient jest klientem publicznym, który nie może bezpiecznie przechowywać poświadczeń klienta. Jest również znany jako „OAuth trzynożny”, ponieważ obejmuje użytkownika. Użytkownik zostaje przekierowany do serwera autoryzacji, aby uwierzytelnić i autoryzować klienta. Klient następnie używa kodu autoryzacji do uzyskania tokenu dostępu.
Proces integracji jest nieco bardziej skomplikowany niż w przypadku przepływu maszyna-maszyna:
Proszę sprawdzić nasz artykuł Chroń swoje Express.js API przy użyciu JWT i Logto jako kompleksowy przykład, jak zintegrować Logto z Reactem i uzyskać dostęp do API serwera Express przy użyciu tokenów JWT.