Mamy architekturę usług mikro i dyskutujemy o tym, jak ujawnić klientowi błędy wewnętrzne.Dobre praktyki w celu propagowania błędów za pośrednictwem usług mikroprzedsiębiorstw
Oto przykład:
Załóżmy mamy 3 usługi, serwis A, B i C. Kiedy klient wysyła żądanie do usługi, która jest publiczna, ta usługa wysyła żądanie do pokoi B który wysyła żądanie do usługi C (które są wewnętrzne i wymagają uwierzytelnienia, ale poświadczenia są przechowywane wewnętrznie, podobnie jak zmienne środowiskowe, nie są wysyłane przez klienta).
I z jakiegoś powodu komunikacja między B i C otrzymuje 401 (może być 422, 403 lub jakikolwiek błąd związany z klientem), co oznacza, że żądanie nie było autoryzowane.
Komunikacja pomiędzy B i C jest wewnętrzny, użytkownik nie wie o tych usług. Czy powinienem ujawnić naszą wewnętrzną strukturę wysyłając 401 do klienta? Czy to nie wina klienta? Czy powinienem wysłać 500?
Jeśli nie jest to błąd użytkownika, to 5xx jest prawidłowym zakresem kodu odpowiedzi. –
@OliverCharlesworth Zgadzam się z Tobą. Czy powinienem zarejestrować ten błąd wewnętrznie i nie ujawniać żadnych informacji użytkownikowi? co myślisz? –
To zależy. Jednak generalnie uważa się, że nie można ujawnić szczegółów błędów wewnętrznych (takich jak ślady stosu) użytkownikowi (zarówno z punktu widzenia UX, jak i bezpieczeństwa). Co najwyżej, niektóre wiadomości, takie jak "500 Server Error - Twój unikalny identyfikator błędu to 123456", który pozwala na późniejsze skorelowanie użytkownika z identyfikatorem w dziennikach błędów. –