Opis mechanizmu
W sPrint API walidacja licencji odbywa się bezpośrednio w kontekście każdego żądania przetwarzania raportu w endpointach takich jak /api/v0/Info czy /api/v0/Print. Kluczowe dla deweloperów jest zrozumienie dwóch obsługiwanych przez system scenariuszy:
- Scenariusz domyślny (Ominięcie obiektu): Jeśli w żądaniu całkowicie pominiesz obiekt data (lub przekażesz go jako null), sPrint API automatycznie użyje licencji, która została globalnie zarejestrowana i skonfigurowana po stronie serwera aplikacji (jeżeli podczas procesu instalacji wybrano opcję „Skonfiguruj połączenie z menedżer kluczy”).
- Scenariusz dynamiczny (Wstrzyknięcie licencji): Jeśli przekażesz prawidłowo wypełniony obiekt data, system spróbuje dynamicznie zarejestrować lub walidować nową licencję dla tego konkretnego wywołania.
Ten uniwersalny komponent wchodzi w skład struktur żądań dla kluczowych operacji API. Elastyczność polimorfizmu struktury data pozwala integratorom na dopasowanie sposobu weryfikacji uprawnień w zależności od architektury sieciowej klienta – poprzez dedykowaną usługę WebApi lub bezpośrednio na poziomie silnika bazodanowego SQL.
Struktura obiektu „data” (Warianty licencjonowania)
Właściwość data definiuje poświadczenia oraz parametry serwera autoryzacji Comarch i bazuje na modelu kontraktu CredentialsViewModel. W zależności od zadeklarowanej wartości w polu type, obiekt przyjmuje jedną z trzech poniższych struktur:
1. Wariant: WebApi (Weryfikacja przez usługę sieciową)
Stosowany w architekturach, gdzie serwer licencji kluczy jest dostępny pod określonym adresem hosta i portem sieciowym (domyślny port to 5150).
"data": {
"server": "panda",
"key": "500012362",
"port": 5150,
"type": "WebApi",
"sqlLogin": null,
"sqlPassword": null
}
- server (string): Adres IP lub nazwa hosta sieciowego serwera licencji sPrint.
- key (string): Unikalny, numer klucza licencji.
- port (integer): Port sieciowy usługi WebApi (wymagany, jeśli usługa działa na porcie niestandardowym).
- type (string): Wartość stała
"WebApi"definiująca tryb autoryzacji sieciowej. - sqlLogin i sqlPassowrd (string): w przypadku wyboru WebApi w payload można przekazać null lub całkowicie pominąć te pola.
2. Wariant: Sql (Autoryzacja serwera SQL z jawnym logowaniem)
Stosowany w systemach, w których poświadczenia licencyjne i uprawnienia komponentu są ściśle weryfikowane na podstawie jawnych danych logowania konta SQL Server.
"data": {
"server": "panda",
"key": "500012362",
"port": 1433,
"type": "Sql",
"sqlLogin": "sprint_api_user",
"sqlPassword": "SuperSecurePassword"
}
- server (string): Nazwa instancji lub adres sieciowy serwera bazodanowego SQL.
- key (string): Unikalny, cyfrowy klucz licencyjny sPrint.
- port (integer): Port nasłuchu instancji SQL (domyślnie 1433 dla MS SQL).
- type (string): Wartość stała
"Sql"definiująca tryb autoryzacji bazodanowej. - sqlLogin (string): Jawny login dedykowanego użytkownika bazy danych SQL.
- sqlPassword (string): Hasło dostępowe przypisane do konta użytkownika bazy danych.
3. Wariant: SqlIntegratedSecurity (Autoryzacja Zintegrowana Windows)
Wybierany w środowiskach domenowych Windows (Active Directory). Uprawnienia licencyjne oraz dostęp do struktury bazy danych sprawdzane są na podstawie konta systemu Windows, na którym uruchomiony jest proces roboczy sPrint API.
"data": {
"server": "panda",
"key": "500012362",
"port": 1433,
"type": "SqlIntegratedSecurity",
"sqlLogin": null,
"sqlPassword": null
}
- server (string): Nazwa instancji lub adres sieciowy serwera bazodanowego SQL.
- key (string): Unikalny, cyfrowy klucz licencyjny sPrint.
- port (integer): Port sieciowy instancji bazy danych.
- type (string): Wartość stała
"SqlIntegratedSecurity"oznaczająca uwierzytelnianie zintegrowane. Pola sqlLogin oraz sqlPassword muszą w tym trybie przyjmować wartość null.
Realne Kompleksowe Przykłady (JSON Payload dla /api/v0/Print)
Poniższe kompletne struktury pokazują, jak w praktyce wygląda osadzenie polimorficznego obiektu data w pełnym kontekście żądania do sPrint API (na przykładzie połączenia z lokalnym szablonem i zwrotem pliku binarnego):
Przykład: Połączenie synchroniczne z autoryzacją serwera SQL
{
"operationId": "print-action-101",
"printFormat": "Pdf",
"data": {
"server": "192.168.1.2",
"key": "500012362",
"port": 1433,
"type": "Sql",
"sqlLogin": "sa",
"sqlPassword": "SuperSecurePassword"
},
"report": {
"dataFormat": "Path",
"path": "C:\\sPrint\\Templates\\Faktura.sp"
},
"output": {
"dataFormat": "Bytes"
}
}