• Дизайн REST API: Как сейчас принято передавать авторизационный токен?

    @motomac
    В спецификации OAuth 2.0 (если вы его используете) явно указывается формат:

    Authorization: Bearer <token>

    https://tools.ietf.org/html/rfc6749#section-7.1

    Думаю, не лишним будет следовать ему.
    Ответ написан
    Комментировать
  • Дизайн REST API: Как сейчас принято передавать авторизационный токен?

    Ваши вопросы по порядку:
    1. Хорошей практикой считается передача http-заголовка Authorization (все известные мне методы: Basic auth, JWT token, Oauth2 предполагают его использование).
    2. Одно из преимуществ, которые я вижу, это возможность быстро проверить какие либо результаты прямо в браузере, т.к. при использовании авторизации через http-заголовок, нужно использовать какой-либо инструмент для тестирования API. Но я бы добавил это только как альтернативный вариант авторизации, например только на тестовом сервере/в локальной среде, и не использовал в продакшене.
    3. Никаких граблей со вторым вариантом не встречал, т.к. это стандартный заголовок. Предполагаю, что можно наткнуться на грабли с третьим вариантом, например нестандартные заголовки будут резаться какими-нибудь проксями, кешами.
    Ответ написан
    Комментировать
  • Дизайн REST API: Как сейчас принято передавать авторизационный токен?

    Всегда если позволено заказчиками использую 2 вариант. Минимум шагов. Прост и понятен
    Ответ написан
    Комментировать
  • Дизайн REST API: Как сейчас принято передавать авторизационный токен?

    @micronull
    Заголовок Authorisation является стандартом. В рамках него уже указывается схема аутентификации.

    Basic — наиболее простая схема, при которой username и password пользователя передаются в заголовке Authorization в незашифрованном виде (base64-encoded). Однако при использовании HTTPS (HTTP over SSL) протокола, является относительно безопасной.
    c27ac06373984352a1ebe2f6424cd9e9.png Пример HTTP аутентификации с использованием Basic схемы.

    Digest — challenge-response-схема, при которой сервер посылает уникальное значение nonce, а браузер передает MD5 хэш пароля пользователя, вычисленный с использованием указанного nonce. Более безопасная альтернативв Basic схемы при незащищенных соединениях, но подвержена man-in-the-middle attacks (с заменой схемы на basic). Кроме того, использование этой схемы не позволяет применить современные хэш-функции для хранения паролей пользователей на сервере.

    NTLM (известная как Windows authentication) — также основана на challenge-response подходе, при котором пароль не передается в чистом виде. Эта схема не является стандартом HTTP, но поддерживается большинством браузеров и веб-серверов. Преимущественно используется для аутентификации пользователей Windows Active Directory в веб-приложениях. Уязвима к pass-the-hash-атакам.

    Negotiate — еще одна схема из семейства Windows authentication, которая позволяет клиенту выбрать между NTLM и Kerberos аутентификацией. Kerberos — более безопасный протокол, основанный на принципе Single Sign-On. Однако он может функционировать, только если и клиент, и сервер находятся в зоне intranet и являются частью домена Windows.
    https://habrahabr.ru/company/dataart/blog/262817/

    Свой заголовок имеет смысл создавать, если ни один из способов не подходит.
    Но как правило Basic более чем достаточно. Мы у себя вместо логина передаем ключ авторизации и пустой пароль. Согласен что коряво.
    Ответ написан
    3 комментария
  • Как грамотно написать интерпретатор?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Собственно классика - Книга красного дракона
    Ответ написан
    Комментировать
  • Дизайн REST API: Как сейчас принято передавать авторизационный токен?

    AlexMcArrow
    @AlexMcArrow
    Люблю РНР, да я такой!
    Имхо третий вариант наиболее удобный. Тело запроса содержит только данные, при этом не передается данных в GET-части запроса (как в первом варианте).
    + третий вариант по сравнению с простой авторизацией позволяет накидать в заголовки что угодно (дополнительные параметры - если вдруг понадобится)
    Ответ написан
    9 комментариев