Ответы пользователя по тегу API
  • Дизайн 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 комментария
  • Как отображать не долготу и широту а адрес?

    @micronull
    Есть несколько способов.
    1. При создании записи сразу сохранять данные адреса, предварительно получив их из API Яндекса или другого сервиса.
    2. Если данных адреса по координатам нет, то периодически их заполнять при выполнении некоего скрипта по задаче cron. Сам скрипт опять же обращается в API Яндекса, получает адрес и сохраняет в базу.
    3. Иметь некую картографическую базу данных, в которой есть адреса и координаты. С помощью не хитрого SQL запроса можно получить адрес. Тут подойдет база ОСМ (OpenStreetMap).

    В вашем случае будет правильней сопоставить 1 и 2 способ вместе. Т.е. в момент создания записи (например на html форме) запрашивать координаты у пользователя и по ним заполнять поле с адресом. Если произошла ошибка, то сохраняем только координаты, потом по крону их заполним.

    Третий способ чреват тем, что база ОСМ очень большая и далеко не все данные правильны. Зато это бесплатно. API Яндекса при большом количестве запросов блокируется и требует денег.
    Ответ написан