Skip to content

Tích hợp

1. Sister Services

SisterHướngBề mặtAuthChế độ thất bạiIdempotency
Tất cả VerifierApplication (sale, inventory, commerce, finance, payment, signal, v.v.) (sister pulls)HTTP GET /jw-certskhông (JWKS công khai)retry; cache JWKS trước đó cho đến khi có thể truy cậpnhận biết xoay JWKS qua kid
Tất cả sisters (sister calls)HTTP — endpoint lookup PolicyDefinitionServiceJWTsister cache trong Redistheo (role, action, subject)
@nx/sale (truy vấn Customer) (sale reads)HTTP — CustomerController CRUD qua repository xuyên-packageJWT hoặc BASICretrygiới hạn theo merchant
@nx/signalPhát WebSocket qua ApplicationWebSocketComponentbest-effortbroadcast

Identity không gọi trực tiếp tới sister service. Mô hình JWKS pull-based là nền tảng tin cậy.

2. Hệ thống ngoài

Hệ thốngHướngBề mặtAuthChế độ thất bại
SMTP (Gmail / SMTP của merchant)NodemailerComponentSMTP credential từ envretry qua queue executor nội bộ
VN Pay SMSMQSMSComponentcấu hình provider từ bảng Configurationcấu hình theo merchant; queue retry
RedisTrạng thái OTP, BullMQ (queue mail/SMS), auth cachemật khẩu từ envservice vẫn khởi động khi không có (auth cache tắt); OTP yêu cầu Redis

3. Flow xuyên-service quan trọng

3.1 Boot sister — bootstrap JWKS

Sister cache vô thời hạn; chỉ refresh khi JWT mang kid chưa biết.

3.2 Flow request đã xác thực (phía sister)

3.3 Permission check (xuyên-service)

Trong setup BANA hiện tại, bảng PolicyDefinition được dùng chung (một DB), nên các sister thường đọc trực tiếp qua PolicyDefinitionRepository thay vì gọi HTTP đến identity. Identity sở hữu đường ghi cho thay đổi policy.

3.4 Đăng ký → gán role mặc định

4. Tính ổn định của Hợp đồng

Bề mặtỔn địnhVersioning
GET /jw-certsổn địnhđịnh dạng JWKS RFC 7517
Payload JWT { userId, roles, organizers, merchants }ổn địnhchỉ thêm trường
HTTP /v1/api/identity/*ổn địnhtiền tố URL /v1/
Bảng Configuration (mail/SMS/OTP)ổn địnhthêm mới (code mới)
Bảng PolicyDefinitionổn địnhthêm mới

5. Vấn đề xuyên suốt

Vấn đềCách xử lý
TrustMọi sister service tin issuer /jw-certs; xoay key xử lý qua kid
Single key vs per-merchantHiện một signing key duy nhất; multi-tenant key isolation ngoài scope (xem purpose & scope)
Service-to-serviceHỗ trợ chiến lược auth BASIC cho gọi xuyên-package
Snapshot fieldsRoles/orgs/merchants trong payload JWT là snapshot tại thời điểm phát — client nên refresh khi thay đổi quyền

6. Trang liên quan

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