Autoryzacja i uwierzytelnianie w prostym projekcie

By | 14 lutego 2018

Razem z kolegą zaczynamy bardzo mały projekt. Jak wstępnie ustaliliśmy składać się on będzie z dwóch podstawowych elementów: usługi serwującej dane i aplikacji mobilnej. Do tego pewnie potrzebny będzie jakiś panel administratora i to pewnie będzie prosta strona WWW. Projekt jest dla mnie nowy przede wszystkim ze względu na to, że chcemy go napisać w Javie. Kiedyś pisałem w tym języku proste aplikacje desktopowe, niestety nigdy nie miałem do czynienia z aplikacjami w modelu klient-serwer w tej technologii. Na szczęście model systemu przerobiłem już wielokrotnie w technologii .NET, więc pozostaje tylko dobrać odpowiednie narzędzia do poszczególnych elementów i powinno być ok. W końcu Java aż tak bardzo nie różni się od C# 😉

Podczas analizy uznaliśmy, że chcemy dość duży nacisk położyć na bezpieczeństwo dostępu do danych i ta działka trafiła się mi z racji tego, że obecnie siedzę w temacie autoryzacji i uwierzytelniania zawodowo. Jako, że część serwerowa napisana będzie z wykorzystaniem frameworka Spring, to powyższe kwestie naturalnie można rozwiązać dodatkiem do niego – Spring Security. Aktualnie jestem na etapie jego rozpoznawania i zapewne powstanie kilka wpisów jak zacząć z nim pracę. Wstępnie napiszę tylko, że umożliwia on implementację wielu różnych systemów uwierzytelniania i autoryzacji, począwszy od zwykłego modelu użytkownik/hasło, przez uwierzytelnianie certyfikatami, LDAP, a na wsparciu dla protokołu OAuth2 i standardu OpenIDCOnnect.

I teraz mam trochę dylemat, który mam nadzieję, wkrótce rozwiązać. Jaki system uwierzytelniania wykorzystać? Czy iść w kierunku prostoty, która jednak nie jest do końca aż tak bezpieczna, czy może skierować kroki w bardziej zaawansowane systemy oparte o protokół OAuth2 i OpenIDConnect i tokeny. W decyzji należy wziąć pod uwagę, że system ma być prosty i pisany będzie po godzinach. Trzeba znaleźć złoty środek pomiędzy bezpieczeństwem, pracochłonnością i łatwością obsługi. Dylemat każdego architekta oprogramowania.

W kolejnych wpisach poza opisem samego frameworka Spring Security postaram się opisać proces decyzyjny, który będzie prowadził do konkretnych rozwiązań. Stay focused!!!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *