Monitorowanie użytkowników logujących się w Portalu

Facebooktwitterpinterestlinkedinmail
Dotyczy wersji: 2024 R1 i powyżej; autor: Łukasz Maciaszkiewicz

 

Wprowadzenie

W niniejszym artykule zaprezentowano, w jaki sposób włączyć funkcjonalność rejestrowania logowania użytkowników na stronę Portalu. Dzięki takiej możliwości administrator platformy WEBCON BPS zyskuje dostęp do informacji na temat osób, które zalogowały się do Portalu.

 

Plik appsettings.user.json

Funkcjonalność rejestrowania logowania można aktywować, edytując plik appsettings.user.json zlokalizowany w katalogu instalacyjnym Portalu (domyślnie C:\Program Files (x86)\WEBCON\WEBCON BPS Portal). Plik ten został ustandaryzowany zgodnie wymaganiami dotyczącymi logowania informacji w platformach .NET Core oraz ASP.NET Core (przedstawionymi w anglojęzycznym artykule Logging in .NET Core and ASP.NET Core). W tym celu dodano do niego poniższą sekcję, która umożliwia konfigurowanie poziomów logowania dla różnych bibliotek.

 

{

"Logging": {

"LogLevel": {

"Default": "Information",

}

}

}

 

UWAGA: wspomniane poziomy określane są we właściwości „LogLevel” i opisują one stopień wpływu zdarzenia na system. Dostępne opcje w tym zakresie zostały szczegółowo opisane we wspomnianym artykule w rozdziale Log level, warto przy tym pamiętać, że wybranie danego poziomu logowania skutkuje rejestrowaniem także poziomów sklasyfikowanych wyżej od niego w hierarchii stopnia wpływu na system. Przykładowo wybranie poziomu Information powoduje, że logowane będą także zdarzenia z poziomów Warning, Error i Critical.

 

  • Biblioteka Nlog

Do zapisywania wpisów w bazie danych wykorzystywana jest biblioteka Nlog w wersji 5. W omawianym przypadku wykorzystano domyślną konfigurację dostępną po instalacji platformy WEBCON BPS. Należy mieć jednak na uwadze, że sposób logowania można w znacznej mierze modyfikować  i rozszerzać, np. zmieniając docelowe miejsce zapisywania wpisów na plik lub konsolę. Szczegółowe informacje w tej kwestii, a także inne użyteczne wskazówki, zawarto w dokumentacji biblioteki dostępnej pod tym linkiem.

 

Monitorowanie użytkowników logujących się w Portalu: konfiguracja

Warto teraz przyjrzeć się konfiguracji, dzięki której administrator platformy WEBCON BPS będzie w stanie monitorować logowanie użytkowników w Portalu. Jak wspomniano w poprzednim rozdziale wszystkie zmiany w tym wypadku będą wprowadzane w pliku appsettings.user.json.

 

  • Określenie logowania dla konkretnego dostawcy usług dostępu

Po otwarciu wspomnianego pliku zlokalizuj węzeł Logging i przejdź do podwęzła LogLevel, w którym można określić poziom logowanych zdarzeń, jak i wskazać dostawcę usług dostępu. Zawarty już w tym podwęźle wiersz Default określa poziom logowania dla wszystkich dostawców usług dostępu jako Warning (logowanie zdarzeń, począwszy od zdarzeń nieprzewidzianych).

Aby jednak wskazać konkretnego dostawcę usług dostępu i określić dla niego poziom logowania dodaj dodatkowy wiersz i wstaw konkretny komponent, tj. Microsoft.AspNetCore.Authentication (informuje, że dany użytkownik zalogował się do Portalu) lub ewentualnie Microsoft.AspNetCore.Authorization (informuje o wybranej przez użytkownika metodzie logowania). Następnie po dwukropku wprowadź poziom logowania, wpisując Information. Dzięki temu rejestrowane będzie logowanie do Portalu oraz nazwa dostawcy. Tak skonfigurowany węzeł Logging powinien prezentować się następująco:

 

{

"Logging":{

"LogLevel":{

"Default":"Warning",

"Microsoft.AspNetCore.Authentication":"Information"

}

}

}

 

UWAGA: opisana powyżej procedura dotyczy konkretnego komponentu (Microsoft.AspNetCore.Authentication) należy jednak pamiętać, że możliwe jest także zwiększenie poziomu logowania w wierszu Default z Warning na Information dla wszystkich dostawców. Ma to jednak swoje konsekwencje. Takie globalne ustawienie spowoduje gromadzenie dużej liczby wpisów, a przez to utrudni odnalezienie właściwych informacji.

 

  • Modyfikacja warunków w sekcji Nlog

Wprowadzona powyżej konfiguracja określa, jakie informacje mają być zapisywane i na jakim poziomie, jednak o sposobie rejestrowania tych informacji decyduje zewnętrzna biblioteka Nlog. Gromadzi ona wpisy, przetwarza je, a następnie zapisuje w odpowiedniej tabeli bazy danych (AdminWFEventLogs) (bez niej wpisy byłyby domyślnie wyświetlane wyłącznie w konsoli).

W konfiguracji przedmiotowej biblioteki zdefiniowane są dwie reguły, które należy usunąć, aby powyżej wprowadzone zmiany skutkowały zapisywaniem do bazy danych informacji o logowaniu użytkownika do Portalu. Wspomniane reguły można odnaleźć przechodząc do węzła Rules w sekcji Nlog, są to:

 

{

"logger": "Microsoft.*",

"minLevel": "Warn",

"writeTo": "database"

},

{

"logger": "Microsoft.*",

"minLevel": "Trace",

"writeTo": "blackhole",

"final": true

},

 

Jak widać, pierwsza z reguł określa, że minimalnym poziomem logowania dla komponentów, których nazwa rozpoczyna od przedrostka Microsoft. jest poziom Warn odpowiadający poziomowi Warning według standardu Microsoftu. Taka reguła uniemożliwiałaby zatem logowanie zdarzeń z poziomem Information dla skonfigurowanego przed chwilą komponentu Microsoft.AspNetCore.Authentication, ponieważ w hierarchii poziomów logowania zdarzeń poziom ten ma wartość mniejszą niż poziom Warning (zob. rozdział Log level).

Ponadto druga z reguł określa, że wszystkie informacje logowane przez komponent Microsoft., których poziom to co najmniej Trace, nie są zapisywane w bazie danych.

W związku z powyższym zaznacz i usuń obie wskazane reguły, a następnie zapisz zmiany w pliku.

 

  • Weryfikacja rejestrowania zdarzeń w bazie danych

Aby sprawdzić działanie systemu po zmianie konfiguracji, należy najpierw zrestartować Portal, a następnie otworzyć bazę konfiguracyjną (BPS_Config) i przejść do tabeli AdminWFEventLogs. W tabeli tej powinny być rejestrowane wpisy dotyczące logowania do Portalu. Aby móc łatwiej odnaleźć odpowiednie wpisy, warto posłużyć się poniższym zapytaniem:

 

SELECT *

FROM [dbo].[AdminWFEventLogs]

ORDER BY 1 DESC

 

Po przesłaniu zapytania w tabeli można odnaleźć wpisy dotyczące logowania do Portalu, którym towarzyszą informacje, takie jak chociażby endpoint, przez który nastąpiło logowanie (kolumna WEL_Name), czas logowania (WEL_DateAndTime), czy komunikaty, które zostały zarejestrowane (WEL_Details).

 

Tabela AdminWFEventLogs z zaznaczonymi wpisami dotyczącymi logowania do Portalu

 

Podsumowanie

Dzięki możliwości zarejestrowania logowania do Portalu administrator zyskuje bardzo użyteczne narzędzie pozwalające mu zachować większą kontrolę nad ruchem w obrębie platformy WEBCON BPS. Funkcjonalność ta ma również nieocenioną wartość w przypadku konieczności odtworzenia sekwencji zdarzeń, a dzięki prostej konfiguracji skorzystanie z niej nie powinno nastręczać trudności nawet osobom stawiającym pierwsze kroki w roli administratora.