Làm thế nào để api gateway gọi tới 2 service cùng lúc trong microservices
Chào mọi người a, em đang làm một dự án nhỏ theo kiến trúc microservice, có 2 service gồm account service và authen service, em sử dụng nginx làm api gateway. Khi đăng nhập thành công thì lưu access token ở bên authen service.
E muốn hỏi là khi muốn thực hiện một số chức năng ở bên account service mà cần đăng nhập mới thực hiện được, thì cần làm thế nào để check access token ở bên authen trước, nếu access token ko hợp lệ thì ko cần gọi bên account-service nữa ạ.
Còn nếu access token hợp lệ thì bắt đầu gọi bên account service ạ. Vì em thấy nginx chỉ giống kiểu đặt cấu hình chứ không thấy nhận dữ liệu trả về từ api được, và cũng không thấy gọi được 2 service trong cùng 1 endpoint
2 CÂU TRẢ LỜI
Tính năng "verify access token ngay trên api gateway" bằng cách gọi tới authen service có ở NGINX Plus. Tùy thuộc vào giao thức xác thực mà bạn đang triển khai trên authen service là gì thì sẽ sử dụng module tương ứng để tính hợp: https://www.nginx.com/blog/authenticating-users-existing-applications-openid-connect-nginx-plus/ https://www.nginx.com/blog/validating-oauth-2-0-access-tokens-nginx/
E muốn hỏi là khi muốn thực hiện một số chức năng ở bên account service mà cần đăng nhập mới thực hiện được, thì cần làm thế nào để check access token ở bên authen trước, nếu access token ko hợp lệ thì ko cần gọi bên account-service nữa ạ.
Cái này của bạn là logic của ứng dụng. Nginx là reverse proxy nên không đảm nhiệm xử lý này. Cái này bạn viết trong code của service cần làm thôi.
Vì em thấy nginx chỉ giống kiểu đặt cấu hình chứ không thấy nhận dữ liệu trả về từ api được, và cũng không thấy gọi được 2 service trong cùng 1 endpoint
Đúng rồi bạn, Nginx chỉ đảm nhiệm là điều hướng request vào service phụ trách. VD: http://account.example.lc => Account Service | http://auth.example.lc => Auth Service.