Аутентификация по API ключу - что это такое?

Рейтинг: 0Ответов: 2Опубликовано: 12.02.2023

Выполняю одно задание, там написано реализовать аутентификацию по API-ключу, то есть хранить один эталонный ключ в проекте и принимать в заголовке к каждому запросу этот параметр, если он совпадает - то обрабатывать запрос, а если нет - то возвращать 401 Unathorized.

Я не могу понять - причем тут аутентификация? Аутентификация это ведь для идентификации пользователей, а какая тут идентификация, если ключ одинаковый.

Это ведь куда более походит на разрешение (permission), и тогда логичнее возвращать 403 Foribdden при неправильном API-ключе.

Помогите понять этот момент, пожалуйста.

Ответы

▲ 1Принят

Не совсем так. API-ключ говорит нам кто мы и что умеем. Проверка правильности ключа = проверка аутентификации. Если проверка не пройдена, то мы должны вернуть 401.

Если ключ верен, то проверка пройдена. Но допустим это был демо ключ, с ограниченными возможностями. При обращении к ресурсам мы проверяем права пользователя с помощью ключа. В случае успешной проверки, мы предоставляем пользователю доступ к функционалу или информации (авторизируем его). Если таких прав у пользователя нет - мы возвращаем 403.

▲ 0

Вы же пишите API, т.е. интерфейс для общения м... одной программы с другой. Ну например какой-нибудь скрипт по расписанию должен забирать какие-то данный с некоего сервиса. Вряд ли вы хотите, чтобы эти данные мог забрать кто-угодно, знающий URL?

Т.е. скрипт пришедший за данными должен как-то авторизоваться (раз) и далее подтверждать в каждом запросе свою авторизацию. Для этого часто используют токены (ну или API-ключи) авторизации. Для получения токена выполняется запрос в некую точку (роут) с указанием логина и пароля, после чего возвращается токен со сроком действия (бессмертный токен - плохая идея). Для разных клиентов токены уникальны (различны).

Почитайте, например, тут https://habr.com/ru/post/503284/ про Bearer Authentication