Я розробляю API REST за допомогою авторизації / автентифікації за допомогою ключа API.
Я спробував розібратися, яке найкраще місце для цього, і з’ясував, що багато людей пропонують використовувати власний заголовк HTTP ProjectName-Api-Key
, наприклад, наприклад:
ProjectName-Api-Key: abcde
але також можливо і ідеологічно правильно використовувати Authorization
заголовок із власною схемою, наприклад:
Authorization: ApiKey abcde
З іншого боку, я зрозумів, що спеціальна схема авторизації може бути несподіваною та непідтримуваною деякими клієнтами і все одно призводить до користувацького коду, тому краще використовувати спеціальний заголовок, оскільки клієнти не мають на це жодних очікувань.
Яким способом ви б хотіли надіслати ключ API?
Bearer
схема використовується виключно з oAuth2. Застосування його окремо від oAuth звучить як неправильне використання. Чому правильно використовувати цю схему, якщо немає oAuth? До речі, у мене виникли проблеми з вибором типу авторизації для мого API. API буде доступний лише для однієї надійної служби, тому я дослідив потік облікових даних клієнта oAuth2 і не знайшов ніякої користі порівняно з ApiKey в моєму випадку.
ApiKey
вона буде перейменована та інтерпретована як Access Token
надана клієнту без закінчення терміну дії. Це свого роду філософський аспект, я вирішив не приводити складних визначень, якщо мій випадок можна описати простими словами, і вирішив просто назвати його "ApiKey". Якщо ваш протокол реалізує стандарт oAuth, я можу погодитись на використання Bearer
, але це не так, я думаю, цю схему неможливо застосувати.
Authorization: Bearer <token>
заголовок, і з цим ніколи не було жодної проблеми. Маркери - JWT s.