+1

Authentication request using Kong API gateway

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


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.