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
Sprawdzanie nagłówków Możesz sprawdzać nagłówek
Authorization. Jeśli nagłówek nie istnieje, zwróć status 401 Unauthorized. Natychmiast odrzuć żądanie.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.
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