Я разрабатываю REST API, используя авторизацию / аутентификацию через ключ 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.