Мне было интересно, допустимо ли помещать пользовательские данные в заголовок авторизации HTTP. Мы разрабатываем RESTful API, и нам может потребоваться способ указать собственный метод авторизации. В качестве примера назовем это FIRE-TOKEN
аутентификацией.
Будет ли что-то вроде этого действительным и разрешенным согласно спецификации: Authorization: FIRE-TOKEN 0PN5J17HBGZHT7JJ3X82:frJIUN8DYpKDtOLCwo//yllqDzg=
Первая часть второй строки (перед ':') - это ключ API, вторая часть - это хэш строки запроса.
источник
Поместите его в отдельный настраиваемый заголовок.
Перегрузка стандартных заголовков HTTP, вероятно, вызовет больше путаницы, чем она того стоит, и нарушит принцип наименьшего удивления . Это также может привести к проблемам взаимодействия для ваших клиентских программистов API, которые хотят использовать готовые наборы инструментов, которые могут работать только со стандартной формой типичных заголовков HTTP (например,
Authorization
).источник
Authorization
заголовка с вашей собственной схемой должно быть более чем достаточно. Кроме того, вы избегаете предполетных запросов Origin, как указывает @wilmoore. Пользовательские схемы не мешают работе какого-либо достаточно современного HTTP-сервера, о котором я знаю, плюс, если вы используете свою собственную схему, вам придется разбирать ее самостоятельно - никакая библиотека не должна конфликтовать (иначе библиотека написана плохо).Authorization
заголовке, а не в настраиваемом заголовке, заключается в том, что прокси и регистраторы знают, что информация должна рассматриваться как конфиденциальная.Нет, это недопустимая продукция согласно определению «учетных данных» в RFC 2617 . Вы указываете действительную схему аутентификации, но значения параметров аутентификации должны иметь форму
token "=" ( token | quoted-string )
(см. Раздел 1.2), и в вашем примере "=" таким образом не используется.источник
Старый вопрос я знаю, но для любопытных:
Вы не поверите, но эта проблема была решена ~ 2 десятилетия назад с помощью HTTP BASIC, который передает значение как имя пользователя: пароль в кодировке base64. (См. Http://en.wikipedia.org/wiki/Basic_access_authentication#Client_side )
Вы можете сделать то же самое, чтобы приведенный выше пример выглядел так:
источник