Skip to content

Integration

Licensing được tách rời bất thường: nó không gọi HTTP ra ngoài tới service anh em nào và không consume sự kiện nào. Toàn bộ hợp đồng xuyên service của nó là chứng chỉ đã ký mà nó ghi vào Redis, được LicenseMiddleware của @nx/core (chạy bên trong mọi service khác) đọc.

1. Service anh em

Direction: gọi / được gọi / hai chiều.

Anh emHướngBề mặtHợp đồngAuthFailure ModeIdempotency
@nx/identityEndpoint JWKS (APP_ENV_JWKS_REST_PATH)Xác minh JWT (VerifierApplication)— (public key)request 401 nếu JWKS không tới đượcn/a
@nx/coreThư viện in-process — schema, repository, LicenseCertSignerHelper (ký), LicenseMiddleware (xác minh)phụ thuộc compile-timen/an/a
Mọi service verifier (sale, commerce, inventory, …)Key Redis lic:certs:<type>:<id>cert envelopechữ ký Ed25519 + secret AESfail-open → license context nulllast-write-wins

Không có SDK client licensing được anh em gọi lúc runtime. APP_ENV_LICENSING_SERVICE_BASE_URL tồn tại trong env registry của core nhưng kiểm tra runtime licensing được làm từ cert cache, không phải bằng cách gọi licensing.

2. Hệ thống ngoài

Hệ thốngHướngBề mặtAuthFailure Mode
Redis (ghi) / (consumer đọc)SET/GET lic:certs:*Password Redislỗi ghi được log; cert vẫn lưu trên hàng License.certificate
PostgreSQLschema licensing qua DrizzleDB credentialtransactional; rollback khi lỗi

3. Luồng xuyên service quan trọng

3.1 Thay đổi trạng thái license lan toả tới mọi consumer

BướcChi tiết
1–2Transaction suspend commit, rồi publishCertificate() ký lại với status mới
3Cert mới ghi đè key Redis (last-write-wins)
4–6Request consumer tiếp theo kéo cert tươi; không cần gọi licensing

Độ trễ lan toả = chỉ tới TTL còn lại của cert hiện có nếu re-publish bị bỏ qua (vd key chưa cấu hình). Với key đã cấu hình, lan toả tức thì ở request consumer tiếp theo.

4. Độ ổn định hợp đồng

Bề mặtĐộ ổn địnhVersioning
REST /v1/api/licensing/*ổn địnhURL /v1/
Key cert Redis lic:certs:<type>:<id>ổn định— (hình dạng key cố định ở cả signer + middleware)
Trường alg của cert envelopeổn địnhaes-256-gcm+ed25519; verifier từ chối alg lạ
Payload cert ILicenseCertificatePayloadổn địnhchỉ thêm (không trường version — phối hợp thay đổi qua @nx/core)

5. Trang liên quan

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.