Middleware uwierzytelniający w Hyperlane

Bezpieczeństwo jest priorytetem dla każdej aplikacji webowej. Musisz kontrolować, kto ma dostęp do Twoich zasobów. W Hyperlane odbywa się to za pomocą middleware. Middleware działa jak strażnik. Przechwytuje żądania, zanim dotrą one do Twojego kodu.

Jak działa middleware w Hyperlane

Middleware wykorzystuje trait ServerHook. Składa się z dwóch głównych części:

new(): Konfiguruje połączenie. • handle(): Wykonywane dla każdego żądania. To tutaj sprawdzasz bezpieczeństwo.

Metoda handle zwraca status:

Status::Continue: Żądanie jest bezpieczne. Pozwól mu przejść. • Status::Reject: Żądanie jest niebezpieczne. Zablokuj je tutaj.

Typowe wzorce uwierzytelniania

  1. Sprawdzanie nagłówków Możesz sprawdzać nagłówek Authorization. Jeśli nagłówek nie istnieje, zwróć status 401 Unauthorized. Natychmiast odrzuć żądanie.

  2. Tokeny Bearer Większość API korzysta z tokenów Bearer. Twoje middleware powinno: • Sprawdzić, czy nagłówek zaczyna się od „Bearer ”. • Wyodrębnić token. • Przechować token w kontekście do późniejszego użycia.

  3. Filtrowanie atrybutów Hyperlane pozwala na filtrowanie żądań za pomocą prostych makr. Możesz ograniczyć dostęp poprzez: • Metody HTTP (takie jak GET lub POST). • Nazwy hostów. • Konkretne ścieżki. • Nagłówki Referer.

Najlepsze praktyki dla bezpiecznych API

• Fail fast. Odrzucaj błędne żądania na wczesnym etapie, aby oszczędzać zasoby serwera. • Używaj atrybutów kontekstu. Przechowuj zweryfikowane tokeny w kontekście, aby inne części Twojej aplikacji mogły je odczytać bez ponownego przetwarzania. • Poprawnie obsługuj CORS. Ustaw nagłówki CORS przed przeprowadzeniem uwierzytelniania. Dzięki temu przeglądarki będą mogły odczytać komunikaty o błędach. • Warstwuj middleware. Używaj numerów priorytetów, aby określić kolejność. Najpierw uruchom CORS, a następnie uwierzytelnianie. • Zarządzaj strumieniami. Jeśli wysłanie żądania się nie powiedzie, zamknij strumień, aby zapobiec błędom.

Korzystając z tych narzędzi, budujesz bezpieczne i uporządkowane systemy.

Źródło: https://dev.to/tengxgfyrz67s/authentication-middleware-151c Kod projektu: https://github.com/hyperlane-dev/hyperlane