Zarządzanie Licencjami i Autoryzacją (Struktura data)

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:

  1. 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”).
  2. 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.
Uwaga
Wybór WebApi wiąże się z koniecznością odblokowania połączenia na porcie 5150 między serwerem aplikacji, a serwerem menedżera kluczy, dodatkowo pole server nie może mieć wprowadzonej instancji nazwanej SQL, wówczas należy podać samą nazwę serwera lub adres IP

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"
  }
}

Czy ten artykuł był pomocny?