Ga naar inhoud
getnextpdf.com

Enterprise editie

Licentieverlening

NextPDF Enterprise zet je licentie om in een runtime-entitlement: een editie-tier, een set mogelijkheden en een brandingbeslissing. Een betaalde licentie die is verlopen, blijft draaien onder een eeuwigdurende-terugval-garantie; alleen updates en ondersteuning stoppen. Deze pagina beschrijft het extern waarneembare gedrag van het licentieoppervlak, de capability- en feature-gates, en het optionele online activeringscontract.

Deze mogelijkheid wordt geleverd in NextPDF Enterprise (nextpdf/enterprise) en wordt geactiveerd met een licentie-envelop op Enterprise-tier-niveau. Een implementatie zonder dat entitlement laadt de klassen van de mogelijkheid niet. Vergelijk edities en schaf een licentie aan.

Licensing is het basis-Enterprise-oppervlak: het lost elke andere mogelijkheid op, dus het is altijd aanwezig zodra het Enterprise-pakket is geïnstalleerd. Individuele downstreamfuncties worden bewaakt door capabilitycodes — capabilities op editie-tier-niveau en onafhankelijk verlopende add-onpacks. De gate rapporteert de actieve editie, de geldigheid, de respijtperiodestatus en de set actieve packs.

Het licentieoppervlak heeft één taak: een licentie omzetten in een beslissing waarop een hostapplicatie kan handelen. Het produceert een onveranderlijk entitlementresultaat met vijf velden die er tijdens runtime toe doen — de editie-tier, het kanaal (betaald of evaluatie), de brandingmodus, of de geïnstalleerde versie mag draaien, en of recht bestaat op updates en ondersteuning.

Edities vormen een strikte hiërarchie: Enterprise omvat Pro, Pro omvat Core. Een capabilitycontrole slaagt daarom wanneer de gelicentieerde editie op of boven de minimale tier van de capability ligt. Sommige capabilities zijn helemaal niet aan een editie gebonden — ze horen bij add-onpacks die hun eigen vervaldatum dragen, onafhankelijk van de looptijd van de basislicentie.

De entitlementbeslissing onderscheidt vijf discrete toestanden. Een actieve licentie heeft volledige toegang. Een betaalde licentie voorbij haar looptijd maar binnen haar respijtvenster behoudt volledige toegang en toont een “binnenkort verlengen”-waarschuwing. Een betaalde licentie voorbij haar respijtvenster gaat over in eeuwigdurende terugval: de geïnstalleerde versie blijft onbeperkt draaien, maar recht op updates en ondersteuning is er niet meer. Een evaluatielicentie gedraagt zich anders — wanneer deze verloopt, wordt de runtime beperkt, omdat evaluatie per ontwerp in de tijd is afgebakend. Wanneer er geen licentie aanwezig is, valt de host terug op een fail-closed-toestand en wordt elke uitvoer visueel gemarkeerd, zodat een ongelicentieerde implementatie nooit wordt aangezien voor een betaalde.

Een contractueel aantal seats wordt tijdens runtime niet afgedwongen. Er is geen telemetrie en geen verplichte phone-home voor gewone werking. De optionele online client bestaat alleen voor expliciete activering, verlengingscontroles en best-effort-heartbeats, en een host die deze nooit aanroept, ontvangt nog steeds een volledige entitlementbeslissing van een lokaal aangeleverde licentie.

Trial-modus is een afzonderlijk, beperkter beleid. Wanneer een licentie als trial is gemarkeerd, begrenst deze de verwerkingsdoorvoer en past hij een evaluatiewatermerk toe op gegenereerde uitvoer, zodat bulkproductiewerk een betaalde licentie vereist. Trial-verloop wordt strikt afgedwongen, zonder respijtperiode.

De dragende beslissing is dat een betaalde licentie de geïnstalleerde runtime nooit uitschakelt. Wanneer een betaalde looptijd eindigt, gaat het entitlement over naar EntitlementStatus::PerpetualFallback — de geïnstalleerde versie blijft draaien, en alleen toekomstige updates en ondersteuning worden ingetrokken. Die garantie houdt stand omdat entitlement een pure in-memory beslissing is over een lokaal aangeleverde licentie, dus geen phone-home en geen netwerkstoring kan een betaalde runtime onder een klant vandaan trekken. Het tegenwicht zijn fail-closed-standaarden: een ontbrekende licentie of een verlopen evaluatie valt terug op de Core-tier en zet brandingMode op een evaluatiewatermerk. Zo wordt een ongelicentieerde implementatie nooit stilzwijgend aangezien voor een betaalde. Eeuwigdurende terugval voor wat je hebt gekocht, fail-closed voor wat je niet hebt gekocht — die combinatie houdt licensing offline-vriendelijk zonder een erewoordsysteem te worden.

Ontwerpachtergrond: Open core, geen lock-in.

Terminal window
composer require nextpdf/enterprise:^3

De ondersteunde integratiepunten zijn de entitlement-evaluator (licentie naar entitlementresultaat), de runtime feature gate (isFeatureEnabled, requireFeature, hasCapability, requireCapability, isInGracePeriod, currentEdition, getActivePacks, trialPolicy), de capabilityregistry (route-naar-capability-resolutie en de set beschikbare capabilities) en de optionele licentieclient (activate, checkRenewal, heartbeat). Behandel de entitlement-evaluator als de enige autoriteit voor licentie-afgeleide beslissingen; vertak niet rechtstreeks op ruwe licentievelden.

use NextPDF\Enterprise\Licensing\EntitlementEvaluator;
$result = (new EntitlementEvaluator())->evaluate($license);
if (! $result->runtimeAllowed) {
// No license, or an expired evaluation license.
throw new RuntimeException($result->warningMessage ?? 'Enterprise runtime disabled.');
}
// Perpetual fallback: still allowed to run; updates/support may be off.
$canUpdate = $result->updateEntitled;
$watermark = $result->shouldApplyEvaluationBranding();
use NextPDF\Enterprise\Licensing\CapabilityCode;
use NextPDF\Enterprise\Licensing\FeatureGate;
final class ReportController
{
public function __construct(private readonly FeatureGate $gate) {}
public function generate(): Response
{
// Throws a structured 403-style exception carrying the required
// capability, the required pack, the current packs, and an
// upgrade-info URL — usable as an upsell touchpoint.
$this->gate->requireCapability(CapabilityCode::EnterpriseComplianceEvidence);
if ($this->gate->isInGracePeriod()) {
$this->logger->notice('Enterprise license in grace period — renewal due.');
}
return $this->renderReport();
}
}
  • Eeuwigdurende terugval is geen respijtperiode. Respijt houdt updates en ondersteuning aan; terugval houdt alleen de runtime aan. Beide houden de geïnstalleerde versie draaiend voor betaalde licenties.
  • Evaluatieverloop beperkt de runtime. Anders dan een betaalde licentie stopt een verlopen evaluatielicentie de runtime en behoudt zij het evaluatiewatermerk.
  • Geen licentie faalt gesloten. Zonder geconfigureerde licentie is het entitlement “no license”, is de runtime uitgeschakeld voor Enterprise-paden en wordt de uitgevoerde uitvoer voorzien van een watermerk, zodat de toestand zichtbaar is in logs en artefacten.
  • Pack-verloop is onafhankelijk. Een add-onpack kan verlopen terwijl de basislicentie nog actief is; de capability die het verleende, faalt dan met een afzonderlijke “pack expired”-uitkomst, los van “not licensed”.
  • Capabilityweigering is gestructureerd. Een geweigerde capability draagt de vereiste capability, het vereiste pack (indien aanwezig), de huidige packs en een upgrade-info-URL — toon deze aan de gebruiker in plaats van een kale fout.

Entitlementevaluatie en capabilitycontroles zijn constant-time, in-memory operaties tegen een geparseerde licentie — geen I/O op het requestpad. De optionele online client doet alleen netwerkoproepen bij expliciete activering, verlengingscontroles en heartbeats; heartbeat-fouten zijn niet-fataal en blokkeren de verwerking nooit.

Deze pagina beschrijft bewust uitsluitend waarneembaar gedrag. De verificatie van de licentie-envelop, de handtekeningcontrole, de antimisbruiklogica en de locatie van de afdwingingscode vallen buiten de scope en worden niet gedocumenteerd op het openbare oppervlak. Operators interacteren met het openbare pakketcontract en het gedocumenteerde gedragscontract. Het online activeringscontract gebruikt een ondertekende-respons-envelop en een door de client aangeleverde nonce, zodat een host een herhaalde of gemanipuleerde activeringsrespons kan detecteren; de precieze verificatieprocedure maakt geen deel uit van het openbare contract.

  • De online activeringsrespons wordt gedragen in een JWS-achtige ondertekende envelop — een beschermde-header / payload / handtekening-triple in de compacte, URL-veilige vorm beschreven in RFC 7515 (JSON Web Signature), §3.1.
  • Handtekeningmateriaal is base64url, gedecodeerd volgens RFC 7515 §5.2.
  • Canonieke JSON voor envelopintegriteit volgt het JSON Canonicalization Scheme, RFC 8785, §3.
  • De activeringshandtekening is een Ed25519-handtekening die wordt geverifieerd tegen een 32-byte publieke sleutel, volgens RFC 8032 (EdDSA), §5.1.
  • Kortlevende servicetokens die tussen componenten worden gebruikt, dragen de geregistreerde claims iss, aud, sub, exp en jti, en honoreren de exp-not-after-regel van RFC 7519 (JWT), §4.1.4.
  • Entitlementevaluatie produceert een onveranderlijk resultaat met een vaste set runtime-relevante velden (editie-tier, kanaal, brandingmodus, runtime-allowed, recht op updates/ondersteuning).
  • Een betaalde licentie schakelt de geïnstalleerde runtime nooit uit: verloop verplaatst deze door respijt en vervolgens eeuwigdurende terugval, waarbij alleen updates en ondersteuning worden ingetrokken.
  • Een verlopen evaluatielicentie beperkt de runtime en behoudt het evaluatiewatermerk; trial-verloop wordt strikt afgedwongen zonder respijtperiode.
  • De “no license”-toestand is fail-closed voor Enterprise-paden, en de uitgevoerde uitvoer wordt voorzien van een watermerk, zodat een ongelicentieerde implementatie nooit wordt aangezien voor een betaalde.
  • Capabilityweigering is gestructureerd: ze draagt de vereiste capability, het vereiste pack (indien aanwezig), de actieve packs en een upgrade-info-URL.
  • Entitlement- en capabilitycontroles zijn constant-time in-memory operaties zonder I/O op het requestpad.

Deze pagina documenteert uitsluitend extern waarneembaar gedrag en het ondersteunde openbare API-oppervlak. Interne namespace-paden, helperklassen, mechanismetabellen, runbook-bestandsnamen en ticketprefixen vallen buiten de scope.

NextPDF Core (Apache-2.0) heeft geen editie- of capability-entitlementoppervlak — geen feature gate, geen entitlement-evaluator, geen licentieclient. Een host die ongelicentieerd Apache-2.0-gedrag nodig heeft, gebruikt de Core-engine rechtstreeks in plaats van de Enterprise-pijplijn. Core bewaakt niets, voorziet niets van een licentiewatermerk en evalueert geen entitlement.

NextPDF Pro heeft evenmin een entitlementoppervlak — niets; deze mogelijkheid heeft geen equivalent op Pro-niveau. Licensing, de capabilityregistry, de feature gate en het activeringscontract worden uitsluitend geleverd in het nextpdf/enterprise-pakket.

De verificatieprocedure van de licentie-envelop, de implementatie van de handtekeningcontrole, de antimisbruiklogica en de locatie van de afdwingingscode worden uitsluitend op gedragsniveau beschreven en worden niet gereproduceerd op het openbare oppervlak. Het online activeringscontract wordt gedocumenteerd als een ondertekende-respons-envelop met een door de client aangeleverde nonce; de precieze verificatieprocedure maakt geen deel uit van het openbare contract.

NextPDF Enterprise lost entitlement op vanuit een lokaal aangeleverde licentie zonder verplichte phone-home voor gewone werking. De optionele online client doet alleen netwerkoproepen bij expliciete activering, verlengingscontroles en best-effort-heartbeats; heartbeat-fouten zijn niet-fataal en blokkeren de verwerking nooit. De operator is eigenaar van de licentieprovisioning, de activerings-/verlengingsconfiguratie en het transportbeleid voor de optionele online client. NextPDF Enterprise dwingt tijdens runtime geen contractueel aantal seats af.

Capaciteits- en seatvoorwaarden worden geregeld door je licentieovereenkomst, niet door runtime-afdwinging. Deze documentatie is geen juridisch advies; raadpleeg je eigen compliance- en juridische adviseurs voor je contractuele en regelgevende verplichtingen.