System licencji dla aplikacji: konta, licencje i REST API

System licencji dla aplikacji to model danych, role, sprawdzanie licencji przez REST API i praca offline. Pokazujemy to na przykładzie INVENTA Licenses.

System licencji dla aplikacji składa się z czterech elementów. Są to konta użytkowników i licencje przypisane do konta i konkretnej aplikacji, z datą ważności. Do tego dochodzi REST API (interfejs, przez który aplikacja łączy się z serwerem), przez które aplikacja sprawdza licencję przy logowaniu. Czwarty element to panele dla osób, które licencje przydzielają i kupują. Tak zbudowaliśmy INVENTA Licenses, centralny system użytkowników i licencji dla aplikacji VR do szkolenia pracowników. Aplikacje tworzy start-up INVENTA XR. Poniżej opisujemy decyzje, które trzeba podjąć przy takim systemie, i to, jak wyglądały w tym projekcie.

Kiedy aplikacja potrzebuje własnego systemu licencji?

Prosta aplikacja sprzedawana bezpośrednio klientom często poradzi sobie z kluczem licencyjnym albo z subskrypcją w bramce płatności. Własny system licencji ma sens, gdy:

  • licencje sprzedają pośrednicy (dystrybutorzy, partnerzy, resellerzy) i to oni zakładają konta klientom,
  • jeden klient korzysta z kilku aplikacji, a każda ma osobną licencję i osobną datę ważności,
  • aplikacje działają poza przeglądarką (na komputerach, goglach VR, urządzeniach) i muszą sprawdzać uprawnienia przez API,
  • klient potrzebuje miejsca, w którym zobaczy swoje licencje i poprosi o nowe.

W INVENTA Licenses spełnione są wszystkie cztery warunki. Aplikacje VR działają w systemie Windows, a licencje czasowe przydzielają dystrybutorzy. Klienci logują się w aplikacjach na konta założone przez dystrybutora. Takie systemy budujemy w ramach usługi platformy SaaS i MVP.

Model danych systemu licencji

Obiekt Co przechowuje Na co uważać
Aplikacja nazwa, opis, dostępność aplikacje dochodzą z czasem, więc listy nie można zaszyć w kodzie
Dystrybutor dane firmy, przypisani klienci dystrybutor widzi tylko swoich klientów
Klient (konto) dane logowania, przypisany dystrybutor konto zakłada dystrybutor, nie klient
Licencja klient, aplikacja, data rozpoczęcia i końca licencja dotyczy jednej konkretnej aplikacji
Prośba o licencję klient, aplikacja, stan obsługi ślad, kto i kiedy prosił

Najważniejsza decyzja to przypisanie licencji do pary „konto + aplikacja”. Licencja przypisana do samego konta byłaby prostsza na start. Przy pierwszej nowej aplikacji wymagałaby jednak przebudowy modelu i migracji danych.

Role w systemie licencji

INVENTA Licenses ma trzy panele: administratora, dystrybutora i klienta.

  • Administrator zarządza aplikacjami, dystrybutorami i kontami.
  • Dystrybutor przydziela swoim klientom licencje czasowe do poszczególnych aplikacji.
  • Klient loguje się do systemu, przegląda dostępne aplikacje i ważność licencji oraz prosi o nowe licencje. Korzysta też z FAQ i formularza kontaktowego.

Przy takim podziale najważniejsza jest izolacja danych. Dystrybutor nie może zobaczyć klientów innego dystrybutora, nawet jeśli zmieni identyfikator w adresie strony. Uprawnienia sprawdzamy więc po stronie serwera przy każdym zapytaniu. Ukrycie przycisków w interfejsie nie wystarczy.

Jak aplikacja sprawdza licencję przez REST API?

Przepływ jest prosty. Użytkownik loguje się w aplikacji VR, a aplikacja wysyła dane logowania do API systemu licencji. API odpowiada, czy konto istnieje i czy licencja na tę aplikację jest ważna.

Kilka zasad, które warto przyjąć przy projektowaniu takiego API:

  • Odpowiedź rozróżnia przyczyny. „Nieprawidłowe hasło”, „brak licencji na tę aplikację” i „licencja wygasła” to trzy różne komunikaty dla użytkownika. Każdy oznacza inną sprawę do wyjaśnienia z dystrybutorem.
  • O ważności decyduje czas serwera. Zegar na komputerze użytkownika można przestawić, więc aplikacja nie powinna sama porównywać dat.
  • API ma numer wersji. Aplikacji zainstalowanych na komputerach klientów nie zaktualizujesz jednocześnie. Starsze wersje muszą działać, dopóki ktoś z nich korzysta.
  • Połączenie idzie tylko przez HTTPS, a liczba prób logowania jest ograniczona, żeby utrudnić zgadywanie haseł.

Co, gdy aplikacja nie ma połączenia z internetem?

Są trzy typowe warianty. Wybór trzeba podjąć na samym początku projektu, bo od niego zależy architektura.

Wariant Jak działa Kiedy pasuje
Wymagane połączenie bez odpowiedzi API aplikacja się nie uruchomi aplikacje używane tam, gdzie internet jest pewny
Okres karencji aplikacja pamięta ostatnie udane sprawdzenie i działa jeszcze przez ustalony czas krótkie przerwy w łączności
Licencja offline podpisany plik lub token z datą ważności, weryfikowany lokalnie stanowiska bez dostępu do sieci

Każdy wariant to kompromis między wygodą użytkownika a kontrolą nad licencjami. W zakładach przemysłowych dostęp do sieci na stanowisku szkoleniowym nie zawsze jest oczywisty. Tę decyzję warto więc omówić z osobami, które znają miejsca, gdzie aplikacje będą używane.

Licencje czasowe w praktyce

  • Strefa czasowa daty końca ma znaczenie. Zapis „licencja do 31 marca” powinien oznaczać ten sam moment dla dystrybutora i dla aplikacji.
  • Przedłużenie nie może tworzyć przerwy ani straty. Nowa licencja przydzielona przed końcem starej nie może skracać okresu, za który klient już zapłacił.
  • Historia zmian pokazuje, kto i kiedy przydzielił, przedłużył lub cofnął licencję. Przy sporach z klientem to jedyne źródło prawdy.
  • Klient powinien sam widzieć datę końca licencji. Wtedy rzadziej jest zaskoczony blokadą aplikacji.

Technologia INVENTA Licenses

System działa na Next.js i React z TypeScriptem, z bazą PostgreSQL i interfejsem w Tailwind CSS. Działa w kontenerach Docker za serwerem Nginx. Tych samych technologii używamy w innych realizacjach, co ułatwia utrzymanie. Co zapisać w umowie utrzymania takiego systemu, piszemy we wpisie o umowie utrzymania aplikacji.

System licencji to dobry kandydat na element pierwszej wersji produktu, jeśli model sprzedaży od początku opiera się na pośrednikach. Więcej o wyznaczaniu zakresu piszemy we wpisie MVP dla startupu.

Jeśli sprzedajesz aplikację przez partnerów albo chcesz kontrolować dostęp do kilku aplikacji z jednego miejsca, napisz do nas. Zaczniemy od modelu sprzedaży, a dopiero potem przejdziemy do API.

Conetso Healthcare,

Harmonogram IT nowej przychodni w pięciu etapach

Wyjaśniamy, kiedy włączyć IT w budowę nowej przychodni lub pracowni i co zamówić najpierw. Opisujemy pięć etapów prac i listę kontrolną przed otwarciem.

Napisz do nas

Porozmawiajmy o Twojej aplikacji

Opisz pomysł albo proces, który aplikacja ma usprawnić. Odpowiemy najpóźniej w ciągu jednego dnia roboczego. Możesz też zadzwonić: +48 81 820 05 09.

Administratorem danych jest CONETSO GROUP Sp. z o.o. Dane z formularza przetwarzamy, żeby odpowiedzieć na wiadomość. Szczegóły i Twoje prawa opisuje polityka prywatności.

Szukaj na stronie