| Termin | Definicja |
|---|---|
| utracona sesja API | Utracona sesja API to przerwane połączenie wymagające ponownego uwierzytelnienia przed kolejnym żądaniem. Jak powstaje utracona sesja APIUtracona sesja API oznacza, że klient korzystający z interfejsu programistycznego nie może już użyć wcześniej ustanowionego uwierzytelnienia. Połączenie sieciowe może nadal działać, ale serwer odrzuca żądanie, ponieważ token sesyjny wygasł, został unieważniony albo nie jest już rozpoznawany. W zależności od sposobu komunikacji odpowiedź może zawierać kod HTTP 401 Unauthorized, gdy brakuje prawidłowego uwierzytelnienia, lub 403 Forbidden, gdy tożsamość jest znana, lecz nie ma uprawnień do wykonania operacji. Sam kod 401 nie wskazuje jeszcze, czy przyczyną jest wygaśnięcie sesji, błędny token, brak nagłówka Authorization czy niezgodność z wymaganym sposobem logowania. Sesja może zostać utracona po określonym czasie bezczynności, po przekroczeniu maksymalnego czasu życia albo po ponownym zalogowaniu, które unieważnia wcześniejsze dane dostępowe. Czasem problem pojawia się po restarcie usługi, zmianie klucza podpisującego tokeny lub wyczyszczeniu magazynu sesji po stronie serwera. W przypadku tokenu JWT serwer zwykle sprawdza między innymi pole exp określające termin wygaśnięcia oraz podpis tokenu. Przy sesji przechowywanej po stronie serwera znaczenie ma identyfikator sesji wysyłany najczęściej w nagłówku Cookie lub innym nagłówku wymaganym przez konkretny interfejs. Objawy w aplikacji korzystającej z interfejsuUtrata sesji jest widoczna wtedy, gdy żądania działające wcześniej zaczynają zwracać błąd uwierzytelnienia. Aplikacja może wyświetlić komunikat o konieczności ponownego logowania, przekierować użytkownika do formularza logowania albo pozostawić ekran bez aktualnych danych, jeśli nie obsługuje odpowiedzi błędnej. W dzienniku klienta warto porównać adres żądania, metodę HTTP, kod odpowiedzi, czas wystąpienia oraz informację, czy wysłano wymagany nagłówek autoryzacyjny. Nie należy zapisywać w logach pełnej wartości tokenu ani ciasteczka sesyjnego, ponieważ taki zapis umożliwia przejęcie aktywnej sesji. Ważna jest różnica między utraconą sesją a awarią połączenia. Przy braku sieci klient może otrzymać błąd DNS, przekroczenie limitu czasu, przerwanie połączenia TCP albo komunikat biblioteki HTTP o niedostępności hosta. Przy utraconej sesji serwer odpowiada poprawnie na poziomie transportu i HTTP, ale odmawia realizacji żądania ze względu na stan uwierzytelnienia. Warto również odróżnić ten przypadek od odpowiedzi 429 Too Many Requests, która oznacza przekroczenie limitu żądań, oraz od kodów 5xx wskazujących problem po stronie usługi. Automatyczne ponawianie żądania bez odświeżenia uwierzytelnienia nie naprawi błędu 401 i może tylko zwiększyć liczbę niepotrzebnych wywołań. Odzyskanie dostępu bez powielania żądańPoprawny klient API powinien reagować na utratę sesji zgodnie z mechanizmem przewidzianym przez daną usługę. Jeśli dostępny jest token odświeżający, klient może wysłać przeznaczone do tego żądanie, otrzymać nowy token dostępu i ponowić pierwotną operację najwyżej raz. Jeżeli odświeżenie się nie powiedzie, użytkownik powinien zostać poproszony o ponowne uwierzytelnienie. Gdy usługa nie udostępnia odświeżania, konieczne jest ponowne zalogowanie lub ponowne uzyskanie klucza zgodnie z dokumentacją konkretnego API. Nie wolno zgadywać formatu nagłówka, punktu końcowego ani parametrów, ponieważ różne systemy stosują odmienne procedury. Podczas diagnozy należy sprawdzić zegar urządzenia, ponieważ znaczna różnica czasu może powodować odrzucenie tokenu z terminem ważności. Należy także zweryfikować, czy aplikacja nie usuwa ciasteczek przy zamknięciu procesu, czy żądania kierowane są do tego samego hosta oraz czy biblioteka HTTP zachowuje wymagane nagłówki przy przekierowaniu. Warto przeanalizować kolejność zdarzeń: uzyskanie sesji, zapis danych uwierzytelniających, pierwsze poprawne żądanie, moment pojawienia się kodu 401 i ewentualną próbę odświeżenia. Jeżeli kilka równoległych żądań wykryje wygaśnięcie jednocześnie, aplikacja powinna zastosować blokadę odświeżania, aby nie wysyłać wielu konkurencyjnych próśb i nie unieważnić świeżo uzyskanych danych. Kontrola klienta API w laptopie lub komputerzeNa komputerze użytkownika warto rozpocząć od sprawdzenia, czy problem występuje tylko w jednej aplikacji, czy także w przeglądarce albo innym kliencie przeznaczonym do tego samego API. Pomocne są narzędzia deweloperskie przeglądarki, dziennik aplikacji oraz podgląd odpowiedzi HTTP, o ile nie ujawniają poufnych danych dostępowych. Należy sprawdzić aktualność programu, poprawną datę i godzinę systemową, działanie DNS oraz to, czy zapora lub program filtrujący ruch nie usuwa wymaganych nagłówków i ciasteczek. Jeśli po ponownym logowaniu sesja natychmiast znów jest odrzucana, przyczyną może być uszkodzony lokalny magazyn danych, niezgodność wersji klienta z usługą albo błędna konfiguracja adresu API. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, dlatego w takim przypadku może sprawdzić działanie systemu, aplikacji klienckiej, połączenia sieciowego oraz zapisów diagnostycznych bez ingerowania w treść danych uwierzytelniających. Podczas serwisowania należy zachować ostrożność: tokeny, klucze API i ciasteczka sesyjne powinny zostać unieważnione przed przekazaniem urządzenia do naprawy, a kopie logów należy oczyścić z wartości umożliwiających dostęp do konta. Sama wymiana podzespołu nie odtworzy utraconej sesji, jeśli jej przyczyna znajduje się po stronie serwera lub wygasłego mechanizmu autoryzacji. |