Obsługa zabezpieczeń, błędów, ostrzeżeń i logowania

W tej sekcji omówiono następujące tematy:

Bezpieczeństwo

Źródło danych może działać w jednym z tych 2 trybów dostępu:

  • W domyślnym trybie ograniczonego dostępu źródło danych obsługuje tylko żądania, które pochodzą z tej samej domeny co ta, w której znajduje się źródło danych. Tryb ograniczonego dostępu zapobiega atakom typu fałszywe żądania w witrynach (XSRF), więc jest bezpieczniejszy niż tryb nieograniczonego dostępu. Ponieważ biblioteka źródła danych ma interfejs tylko do zwracania danych, a nie zmiany stanu ani danych po stronie serwera, możliwe są wyłącznie ataki XSRF mające na celu kradzież danych. Aby chronić źródło danych przed próbami kradzieży danych, musisz używać trybu ograniczonego dostępu w połączeniu z uwierzytelnianiem za pomocą plików cookie. Sposób uwierzytelniania użytkowników zależy od środowiska i implementacji.

  • W trybie dostępu bez ograniczeń źródło danych obsługuje wszystkie żądania niezależnie od ich pochodzenia. Źródło danych działające w trybie bez ograniczeń może być chronione przez uwierzytelnianie w oparciu o pliki cookie, ale pamiętaj, że będzie ono podatne na ataki XSRF. Użyj trybu bez ograniczeń, jeśli wizualizacje na stronach internetowych spoza domeny źródła danych muszą mieć dostęp do źródła danych lub gdy dane należą do domeny publicznej, więc nie muszą być chronione.

Żądanie wizualizacji może zawierać odpowiedź w formacie JSON, CSV lub HTML. Format odpowiedzi określa format, w jakim źródło danych zwraca tabelę danych. Formaty CSV i HTML nie są podatne na ataki XSRF, więc można je otworzyć z innych domen, nawet w trybie ograniczonego dostępu.

Aby określić tryb bez ograniczeń, zastąp isRestrictedAccessMode() w ten sposób:

  @Override
  protected boolean isRestrictedAccessMode() {
    return false;
  }

Dla uproszczenia wszystkie przykłady udostępnione w bibliotece są uruchamiane w trybie nieograniczonego dostępu.

Błędy i ostrzeżenia

Jeśli zwrócenie prawidłowej tabeli danych jest niemożliwe lub pożądane, biblioteka zwraca DataSourceException. Dotyczy to na przykład sytuacji, gdy nie można uwierzytelnić użytkownika. Biblioteka zgłasza te wyjątki, gdy błędy uniemożliwiają utworzenie tabeli danych. Możesz stosować wyjątki w sytuacjach charakterystycznych dla Twojego źródła danych. Jeśli tak, utwórz własne typy wyjątków błędów, dziedziczając je z klasy DataSourceException. Możesz też zgłosić klasę DataSourceException bezpośrednio.

Klasa DataSourceException znajduje się w pakiecie base i przyjmuje te parametry:

  • ReasonType 
    Ten parametr jest wymagany. Dostępne typy przyczyn są określone w wyliczeniu ReasonType. Jeśli żaden z dostępnych typów powodów nie jest odpowiedni, możesz użyć właściwości Other lub Internal.
     
  • MessageToUser 
    Ten parametr określa tekst komunikatu o błędzie. Najczęściej są one wyświetlane użytkownikowi jako etykietka, więc ważne jest, aby nie podawać informacji technicznych ani poufnych.

Do obsługi błędów możesz użyć zestawu funkcji pomocniczych w datasource.DataSourceHelper. W tym przypadku wywołaj 2 funkcje o tej samej nazwie setErrorServletResponse, aby uzyskać DataSourceException i ustawić błąd odpowiedzi serwletu danych. Jedna z tych funkcji przyjmuje żądanie źródła danych, a druga – HttpServlet request, i jest używana w przypadkach, gdy wystąpił błąd utworzenia DataSourceRequest. Przykładową implementację znajdziesz w sekcji Definiowanie możliwości i przebiegu zdarzeń.

Jeśli nie można zwrócić tabeli danych, biblioteka zwraca błąd. Jeśli można zwrócić tabelę danych, ale występuje problem ze zgłoszeniem, biblioteka wraz z tabelą danych zwraca ostrzeżenie. Biblioteka tworzy na przykład ostrzeżenie w tych sytuacjach:

  • jeśli wizualizacja z wykorzystaniem zapytań udostępnia element LIMIT, który skutkuje skróceniem danych.
  • jeśli wizualizacja wysyła żądanie nieprawidłowego wzorca formatowania w klauzuli FORMAT.

Aby dodać własne ostrzeżenie, utwórz instancję base.Warning i dodaj ją do tabeli danych za pomocą metody addWarning().

Logowanie

Biblioteka korzysta z dzienników w Dżakarcie. Danych logowania w Dżakarcie można używać z najpopularniejszymi systemami logowania, które są już używane. Jeśli masz niestandardowy system logowania, konieczne może być napisanie adaptera. Więcej informacji znajdziesz na stronie głównej logowania Dżakarta.

W przypadku zgłoszenia wyjątku do dziennika wysyłane są informacje. Sposób uzyskiwania dostępu do dziennika zależy od używanego systemu logowania.