Đặc tả JWT chỉ mô tả tải trọng và cách gửi, nhưng để giao thức xác thực mở, cho phép tính linh hoạt, nhưng thật không may, tính linh hoạt có thể dẫn đến phản xạ và xác định sai.
Tôi đang tìm kiếm một số doanh nghiệp đã suy nghĩ kỹ và thử nghiệm xác thực JWT, mà tôi có thể sử dụng hoặc điều chỉnh, nhưng tôi đã thất bại trong việc tìm kiếm thứ gì đó hoàn chỉnh.
Những gì tôi đã nghĩ là:
- khi không có tiêu đề ủy quyền nào được đáp ứng hoặc mã thông báo JWT không hợp lệ hoặc hết hạn, hãy gửi HTTP 401
- để xác thực, sử dụng / đăng nhập kênh REST, gửi tên người dùng và mật khẩu làm đối tượng JSON
- để giữ cho mã thông báo tồn tại, hãy sử dụng / giữ kênh REST, gọi nó sau mỗi N (5) phút, nhận mã thông báo JWT mới và thay thế mã hiện có sau mỗi cuộc gọi (mã thông báo hết hạn sau M (15) phút)
Tuy nhiên, điều làm tôi băn khoăn, đó là sự cần thiết của kênh / Keepalive đó. Mặt khác, nó buộc tôi phải ngăn chặn việc xác thực hết hạn, ngay cả khi người dùng đi vắng (quyết định, nếu chúng tôi muốn giữ lại chưa được đáp ứng) và tất nhiên, đó là những cuộc gọi thêm và phức tạp thêm cho giao thức. Điều thú vị là máy chủ sẽ tự động kéo dài mã thông báo. Trong môi trường dựa trên phiên, điều này xảy ra bằng cách đặt lại dấu thời gian, tuy nhiên, ở đây, máy chủ sẽ phải gửi mã thông báo mới, có thể không phải mỗi lần, nhưng một khi mã thông báo sẽ hết hạn sau R (giả sử là 10) phút. Nhưng đặt nó trong phần thân phản hồi có nghĩa là sửa đổi giao thức phản hồi JSON (do đó, giải pháp là xâm lấn và không minh bạch) và đặt một tiêu đề HTTP bổ sung mà máy khách có thể xử lý không nhất thiết phải là một mẫu tốt. TÔI'
Có mẫu doanh nghiệp nào sẵn sàng trả lời các điểm mở của tôi không? Là dự thảo giao thức của tôi là một ý tưởng đáng tin cậy? Tôi muốn sử dụng một cái gì đó sẵn sàng hơn là thiết kế từ đầu.