Tôi đang thiết kế API REST bằng ủy quyền / xác thực thông qua Khóa API.
Tôi đã cố gắng tìm ra đâu là nơi tốt nhất cho nó và phát hiện ra rằng nhiều người đề xuất sử dụng tiêu đề HTTP tùy chỉnh ProjectName-Api-Key
, ví dụ:
ProjectName-Api-Key: abcde
nhưng cũng có thể và chính xác về mặt ý thức hệ để sử dụng Authorization
tiêu đề với sơ đồ tùy chỉnh, ví dụ:
Authorization: ApiKey abcde
Mặt khác, tôi nhận thấy rằng một lược đồ ủy quyền tùy chỉnh có thể bị một số khách hàng bất ngờ và không được hỗ trợ và dẫn đến mã tùy chỉnh, vì vậy tốt hơn là sử dụng tiêu đề tùy chỉnh vì khách hàng không có bất kỳ mong đợi nào về nó.
Bạn muốn gửi API API theo cách nào?
Bearer
lược đồ được sử dụng riêng với oAuth2. Áp dụng nó riêng biệt từ oAuth nghe có vẻ như lạm dụng nó. Tại sao nó chính xác để sử dụng lược đồ này nếu không có oAuth? Nhân tiện, tôi gặp rắc rối với việc chọn loại ủy quyền cho API của mình. API sẽ chỉ khả dụng cho một dịch vụ đáng tin cậy, vì vậy tôi đã điều tra luồng thông tin xác thực ứng dụng khách của oAuth2 và không tìm thấy bất kỳ lợi ích nào so với ApiKey trong trường hợp của tôi.
ApiKey
được đổi tên và được hiểu là Access Token
cấp cho khách hàng mà không có thời gian hết hạn. Đó là một khía cạnh triết học, tôi quyết định không đưa ra các định nghĩa phức tạp nếu trường hợp của tôi có thể được mô tả bằng các thuật ngữ đơn giản và quyết định chỉ gọi nó là "ApiKey". Nếu giao thức của bạn thực hiện tiêu chuẩn oAuth, tôi có thể đồng ý sử dụng Bearer
, nhưng không, tôi đoán sơ đồ này không thể được áp dụng.
Authorization: Bearer <token>
tiêu đề và không bao giờ có một vấn đề duy nhất với điều đó. Các mã thông báo là JWT s.