Chuyển tới nội dung chính

Tổng quan Plugin

Plugin mở rộng khả năng của API Gateway: xác thực request, bảo mật, kiểm soát lưu lượng hoặc biến đổi request trước khi chuyển tới backend. Mỗi plugin thuộc về một API Gateway và được áp dụng theo một phạm vi (Scope) do bạn chọn.

Các plugin hỗ trợ​

PluginTypeDùng đểHướng dẫn
JWT AuthAuthenticationXác thực request bằng JSON Web Token của Consumer.Plugin JWT Auth
OpenID ConnectAuthenticationXác thực qua Identity Provider bên ngoài (Keycloak, Auth0, Google, Okta…) theo OAuth 2.0 / OIDC.Plugin OpenID Connect
CorsSecurityGắn header CORS để trang web ở domain khác gọi được API từ trình duyệt.Plugin CORS
Rate LimitingTraffic ControlGiới hạn số request trong một khoảng thời gian.Plugin Rate Limiting
Proxy RewriteTransformationViết lại host, path, method, header của request trước khi chuyển tới backend.Plugin Proxy Rewrite

Các bước thao tác, xem trang Thêm Plugin và trang hướng dẫn của từng plugin.

Phạm vi áp dụng​

Khi tạo plugin, bạn chọn plugin áp dụng cho đâu tại mục Scope:

ScopeÁp dụng choCột Applied to trong danh sách
GlobalMọi Service, Route và Consumer của API Gateway.Global
ScopedChỉ các Route / Service bạn chọn qua + Add Route / + Add Service.Route, Service hoặc Route + Service

Một plugin có thể gắn cho nhiều Route / Service. Khi thêm plugin từ màn hình chi tiết Route hoặc Service, bạn chọn dùng lại một plugin đã có (Select existing plugin) hoặc tạo mới (Create new plugin).

Plugin trực tiếp và plugin kế thừa​

Tab Plugins trên màn hình chi tiết Route / Service chia 2 tab con:

Tab conÝ nghĩa
Explicit PluginPlugin gắn trực tiếp vào Route / Service đang xem. Bạn thêm plugin ở tab này.
Implicit PluginPlugin mà Route / Service được hưởng từ nơi khác, chỉ xem: plugin Global, hoặc plugin gắn vào Service mà Route đang dùng qua Via Service.

Ví dụ: plugin Rate Limiting gắn vào Service order-service. Mọi Route chọn Via Service tới order-service đều thấy plugin này ở tab Implicit Plugin, bạn không phải gắn lại cho từng Route.

Plugin và các module khác​

ModuleLiên quan tới Plugin
RouteĐối tượng của Scope. Tab Plugins có Explicit Plugin / Implicit Plugin, thêm plugin ngay tại đây.
ServiceĐối tượng của Scope. Plugin gắn vào Service được các Route Via Service kế thừa.
ConsumerPlugin xác thực nhận diện request theo Credential của Consumer. Scope Global áp dụng cả Consumer.
UpstreamKhông gắn plugin trực tiếp. Muốn áp dụng plugin cho request tới một Upstream, gắn plugin vào Route hoặc Service dùng Upstream đó.

Kết hợp plugin thường gặp​

Một số plugin chỉ phát huy tác dụng khi đi cùng thành phần khác:

Mục tiêuCần có
Xác thực request bằng JWTPlugin JWT Auth trên Route / Service + Consumer có JWT Credential.
Giới hạn request theo từng khách hàngPlugin Rate Limiting với limit_by là consumer + một plugin xác thực (JWT Auth, OpenID Connect) trên cùng Route / Service.
Frontend ở domain khác gọi API có kèm tokenPlugin Cors + JWT Auth, giữ run_on_preflight của JWT Auth là false.
Chuyển tên Consumer xuống backendPlugin Proxy Rewrite dùng biến $consumer_name + một plugin xác thực chạy trước.

Bước tiếp theo​

Cập nhật lần cuối vào