跳到內容
getnextpdf.com

Enterprise 版本

授權

NextPDF Enterprise 會將你的授權解析為一份執行階段權益:一個版本層級、一組能力,以及一個品牌標示決定。已過期的付費授權會在永久備援保證下持續運作;只有更新與支援會停止。本頁描述授權介面外部可觀察的行為、能力與功能閘門,以及選用的線上啟用合約。

此能力隨附於 NextPDF Enterprisenextpdf/enterprise),並以 Enterprise 層級的授權封套啟用。缺少該權益的部署不會載入此能力的類別。比較各版本並取得授權

授權是基礎的 Enterprise 介面:它會解析所有其他能力,因此只要安裝了 Enterprise 套件,它就一律存在。各個下游功能由能力碼閘控——版本層級能力,以及各自獨立到期的附加套件。閘門會回報生效中的版本、有效性、寬限期狀態,以及生效中的套件集合。

授權介面只有一項工作:將授權轉換為主機應用程式可據以行動的決定。它會產出一份不可變的權益結果,內含五個在執行階段重要的欄位——版本層級、通路(付費或評估)、品牌標示模式、已安裝版本是否可運行,以及是否享有更新與支援權益。

各版本構成嚴格的階層:Enterprise 包含 Pro,Pro 包含 Core。因此,當被授權的版本等於或高於某能力的最低層級時,能力檢查即會成功。某些能力完全不綁定到任何版本——它們屬於附加套件,並帶有各自獨立於基礎授權期間的到期時間。

權益決定區分五個離散狀態。生效中的授權具有完整存取權。已超過授權期間但仍在寬限窗內的付費授權會保持完整存取,並顯示一則「請盡快續約」的警告。超過寬限窗的付費授權會進入永久備援:已安裝的版本可無限期持續運行,但不再享有更新與支援權益。評估授權的行為則不同——當它到期時,執行階段會受到限制,因為評估在設計上即為限時。當沒有任何授權存在時,主機會解析為 fail-closed 狀態,且任何輸出都會被視覺化標記,使未授權的部署絕不會被誤認為付費部署。

合約席次數量不會在執行階段強制執行。一般運作既無遙測,也無強制回報。選用的線上用戶端只為了明確的啟用、續約檢查與盡力而為的心跳而存在;從不呼叫它的主機,仍會從本機提供的授權獲得一份完整的權益決定。

試用模式是一個獨立、更狹隘的原則。當授權被標記為試用時,它會限制處理吞吐量,並對產出輸出套用評估浮水印,使大量正式作業需要付費授權。試用到期會嚴格強制執行,沒有寬限期。

承重的決定在於:付費授權絕不會停用已安裝的執行階段。當付費期間結束時,權益會轉移到 EntitlementStatus::PerpetualFallback——已安裝的版本持續運行,僅撤銷向前的更新與支援。這項保證之所以成立,是因為權益是一項純粹針對本機提供之授權的記憶體內決定,因此沒有任何回報、也沒有任何網路中斷能把付費的執行階段從客戶手中抽走。作為制衡的是 fail-closed 預設值:缺少授權或已過期的評估會解析為 Core 層級,並將 brandingMode 設為評估浮水印。因此未授權的部署絕不會被悄悄誤認為付費部署。你所購買的享有永久備援,你未購買的則 fail-closed——正是這組搭配,讓授權在不淪為君子協定的前提下仍然對離線友善。

設計背景:開放核心,無鎖定

Terminal window
composer require nextpdf/enterprise:^3

受支援的整合點包括:權益評估器(授權到權益結果)、執行階段功能閘門(isFeatureEnabledrequireFeaturehasCapabilityrequireCapabilityisInGracePeriodcurrentEditiongetActivePackstrialPolicy)、能力註冊表(路由到能力的解析以及可用能力集合),以及選用的授權用戶端(activatecheckRenewalheartbeat)。請將權益評估器視為所有源自授權之決定的唯一權威;不要直接以原始授權欄位作分支判斷。

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();
}
}
  • **永久備援不是寬限期。**寬限期會保留更新與支援;備援則只保留執行階段。對付費授權而言,兩者都會讓已安裝的版本持續運行。
  • **評估到期會限制執行階段。**與付費授權不同,已過期的評估授權會停止執行階段並保留評估浮水印。
  • **沒有授權時 fail closed。**在未設定任何授權的情況下,權益為「無授權」,Enterprise 路徑的執行階段會停用,且產出輸出會被加上浮水印,使該狀態在日誌與成品中可見。
  • **套件到期是獨立的。**附加套件可能在基礎授權仍有效時到期;它所授予的能力屆時會以一個明確的「套件已過期」結果失敗,與「未授權」有所區別。
  • **能力拒絕是結構化的。**被拒絕的能力會帶有所需能力、所需套件(若有)、目前的套件,以及一個升級資訊 URL——請將這些呈現給使用者,而不是一個空泛的錯誤。

權益評估與能力檢查是針對已剖析授權的常數時間、記憶體內運算——在請求路徑上沒有任何 I/O。選用的線上用戶端只在明確啟用、續約檢查與心跳時進行網路呼叫;心跳失敗不致命,且絕不會阻擋處理。

本頁刻意只描述可觀察的行為。授權封套驗證、簽章檢查、反濫用邏輯,以及強制執行程式碼的位置皆不在範圍內,且不在公開介面上記載。運維人員與公開套件合約以及記載的行為合約互動。線上啟用合約使用一個簽署過的回應封套與一個用戶端提供的 nonce,使主機能偵測遭重放或竄改的啟用回應;確切的驗證程序不屬於公開合約。

  • 線上啟用回應承載於一個 JWS 風格的簽署封套中——即 RFC 7515(JSON Web Signature)§3.1 所描述的精簡、URL-safe 形式中的 protected-header / payload / signature 三元組。
  • 簽章材料為 base64url,依 RFC 7515 §5.2 解碼。
  • 用於封套完整性的正規 JSON 遵循 JSON Canonicalization Scheme,RFC 8785,§3。
  • 啟用簽章為 Ed25519 簽章,依 RFC 8032(EdDSA)§5.1 對照一把 32-byte 公鑰驗證。
  • 元件之間使用的短效服務權杖承載已註冊的宣告 issaudsubexpjti,並遵守 RFC 7519(JWT)§4.1.4 的 exp not-after 規則。
  • 權益評估會產出一份不可變結果,並具有一組固定的執行階段相關欄位(版本層級、通路、品牌標示模式、執行階段是否允許、是否享有更新/支援權益)。
  • 付費授權絕不會停用已安裝的執行階段:到期會讓它經過寬限期,接著進入永久備援,僅撤銷更新與支援。
  • 已過期的評估授權會限制執行階段並保留評估浮水印;試用到期會嚴格強制執行,沒有寬限期。
  • 「無授權」狀態對 Enterprise 路徑而言為 fail-closed,且產出輸出會被加上浮水印,使未授權的部署絕不會被誤認為付費部署。
  • 能力拒絕是結構化的:它帶有所需能力、所需套件(若有)、生效中的套件,以及一個升級資訊 URL。
  • 權益與能力檢查是常數時間的記憶體內運算,在請求路徑上沒有任何 I/O。

本頁僅記載外部可觀察的行為與受支援的公開 API 介面。內部命名空間路徑、輔助類別、機制表格、runbook 檔名,以及工單前綴皆不在範圍內。

NextPDF Core(Apache-2.0)沒有任何版本或能力權益介面——沒有功能閘門、沒有權益評估器、沒有授權用戶端。需要未授權 Apache-2.0 行為的主機會直接使用 Core 引擎,而非 Enterprise 管線。Core 不進行閘控、不為授權加上浮水印,也不評估權益。

NextPDF Pro 同樣沒有任何權益介面——一概沒有;此能力沒有任何 Pro 層級的等價物。授權、能力註冊表、功能閘門與啟用合約僅隨 nextpdf/enterprise 套件提供。

授權封套驗證程序、簽章檢查實作、反濫用邏輯,以及強制執行程式碼的位置,皆僅以行為層級描述,且不在公開介面上重現。線上啟用合約記載為一個帶有用戶端提供 nonce 的簽署回應封套;確切的驗證程序不屬於公開合約。

NextPDF Enterprise 會從本機提供的授權解析權益,一般運作無強制回報。選用的線上用戶端只在明確啟用、續約檢查與盡力而為的心跳時進行網路呼叫;心跳失敗不致命,且絕不會阻擋處理。運維人員擁有授權佈建、啟用/續約設定,以及選用線上用戶端的傳輸政策。NextPDF Enterprise 不會在執行階段強制執行合約席次數量。

容量與席次條款由你的授權合約規範,而非由執行階段強制執行。本文件不是法律意見;關於你的合約與法規義務,請諮詢你自己的合規與法律顧問。