1. Giới thiệu vấn đề
Mình đã và đang sử dụng Kong làm API gateway cho các hệ thống của bên mình, search thử trên viblo cũng có khá nhiều bài trên này viết vể Kong, nhưng chủ yếu làm API gateway, chưa thấy bài nào viết về chức năng authentication của nó. Bài này hướng dẫn bạn config authentication trong Kong, tính năng này khá thú vị, sẽ có 1 số cases áp dụng được.
2. Cài đặt Kong và Authentication
2.1. Cài đặt Kong, KongA
Có rất nhiều bài tương tự về chủ để này, cho đơn giản mình sẽ tạo 1 file docker-compose để cài Kong.
2.2. Tạo Routes, Services
Chúng ta có thể dùng API của Kong để tạo các Routes và services, nhưng trong bài này mình hướng dẫn sử dụng KongA (UI tool). Xem các bước hướng dẫn ở https://github.com/ledangtuanbk/kong-konga-postgres-docker-compose
2.3. Cài đặt Authentication
Đây chính là nội dung chính của bài viết. Có khá nhiều Authentication method hỗ trợ bởi Kong. Chúng ta có thể set authentication cho route hay service
2.3.1. Basic Authentication
Xem định nghĩa ở đây
2.3.1.1. Cài đặt
Sử dụng username/password để authentication. Xem cách cài đặt ở đây
2.3.1.1. Các trường hợp áp dụng
- Khi bạn cung cấp API cho bên khác sử dụng, chúng ta không thể để API Public được, thay vì việc chúng ta tạo credential và quản lý nó thì chúng ta sẽ quản lý nó ở tầng API gateway. Giảm tải logic cho service.
2.3.2. Key Authentication
Xem định nghĩa ở đây
2.3.2.1. Cài đặt
Sử dụng key để authentication. Xem cách cài đặt ở đây Hệ thống sẽ tạo ra 1 key, và yêu cầu client thêm nó vào header để authentication.
2.3.2.2. Các trường hợp áp dụng
Tương tự Basic Authentication, key này có thể revoke nếu như không muốn cho phép sử dụng nó tiếp.
2.3.3. HMAC Authentication
Xem định nghĩa ở đây
2.3.3.1. Cài đặt
Sử dụng HMAC data để authentication. Xem cách cài đặt ở đây Thuật toán này khá phức tạp, để đảm bảo toàn vẹn dữ liệu, nó tăng tính bảo mật nhưng cũng tốn thời gian để cài đặt.
2.3.3.2. Các trường hợp áp dụng
Áp dụng cho các hệ thống yêu cầu tính bảo mật cao, đảm bảo data không bị thay đổi trong quá trình truyền, token cũng chỉ sử dụng trong thời gian ngắn.
2.3.4. JWT Authentication
2.3.4.1. Cài đặt
Sử dụng JWT Authentication. Xem cách cài đặt ở đây
2.3.4.2. Các trường hợp áp dụng
Sử dụng để verify request ở tầng API gateway, giảm tải cho ứng dụng.
3. Kết Luận
Tùy từng trường hợp, mình sẽ chọn loại authentication phù hợp
Link Sourcecode