На практике существует два метода. Базовая аутентификация HTTP (не очень безопасная для мобильных приложений) и OAuth2 (защищенная по сравнению с базовой аутентификацией HTTP).
- HTTP Basic Authentication: Процесс прост как для технических писателей услуг API, а также разработчиков их использования:
Разработчик дается ключ API (обычно ID и Secret) , Этот ключ API обычно выглядит примерно так: 3bb743bbd45d4eb8ae31e16b9f83c9ba: ffb7d6369eb84580ad2e52ca3fc06c9d.
Он несет ответственность за хранение ключа API в безопасном месте на своем сервере, так что никто не может получить к нему доступ. Он делает запросы API к службе API, подавая ключ API в заголовок HTTP-авторизации вместе со словом «Basic» (который используется сервером API для правильного декодирования учетных данных авторизации). Ключ также кодируется Base64.
Например ключ может быть: 3bb743bbd45d4eb8ae31e16b9f83c9ba: ffb7d6369eb84580ad2e52ca3fc06c9d
закодированы в base64: M2JiNzQzYmJkNDVkNGViOGFlMzFlMTZiOWY4M2M5YmE6ZmZiN2Q2MzY5ZWI4NDU4MGFkMmU1MmNhM2ZjMDZjOWQ =.
Сервер API отменяет этот процесс. Когда он найдет заголовок HTTP-авторизации, он будет декодировать результат base64, прочитать идентификатор ключа и секретный ключ API и проверить эти токены, прежде чем разрешить обработку запроса.
HTTP Basic Authentication прост, но для мобильных приложений защита ключа API является основной задачей. Для проверки подлинности HTTP Basic Basic для каждого запроса требуются необработанные ключи API, что увеличивает вероятность злоупотреблений в долгосрочной перспективе. Также нецелесообразно, так как вы не можете безопасно вставлять ключи API в мобильное приложение, которое распространяется среди многих пользователей.
Например, если вы создаете мобильное приложение со встроенными в него ключами API, пользователь может перепроектировать ваше приложение, подвергнуть действию этот ключ API и злоупотреблять вашим сервисом.
Таким образом, HTTP Basic Authentication опасна в открытых средах, таких как веб-браузеры и мобильные приложения.
ПРИМЕЧАНИЕ. Как и все протоколы аутентификации, HTTP-аутентификация должна использоваться по протоколу SSL в любое время.
OAuth2 для мобильной API безопасности:
OAuth2 является отличным протоколом для обеспечения услуг API из открытых устройств, и обеспечивает лучший способ для аутентификации мобильных пользователей с помощью маркеров аутентификации.
маркер аутентификации OAuth2 работает с точки зрения пользователя (OAuth2 имя его пароль потока гранта):
Когда пользователь запускает мобильное приложение, он побудил имя пользователя или адрес электронной почты и пароль. Разработчик отправляет запрос POST из приложения в службу API с включенными данными входа (через SSL). Затем проверьте учетные данные пользователя и создайте токен доступа для пользователя, срок действия которого истекает через определенное время. Этот токен доступа можно хранить на мобильном устройстве, рассматривая его как ключ API, который позволяет получить доступ к службе API. Когда истекает срок действия токена доступа, пользователь снова запрашивает данные для входа.
OAuth2 генерирует токены доступа, которые могут храниться в открытой среде временно и безопасны. Это безопасно, поскольку токен доступа генерируется для временной цели и уменьшает потенциал повреждения.
Токен хранится в соответствии с используемой мобильной платформой. Для Android-приложения маркеры доступа могут быть сохранены в общих настройках и для приложения iOS в Keychain.
Мне действительно нужно аутентифицировать как веб-клиентов, так и мобильных клиентов. Веб-клиент использует JavaScript, поэтому легко получить секретный ключ, однако ваше решение будет отлично работать для мобильного клиента. поэтому, если я идентифицирую тип клиента, я могу аутентифицироваться по-разному. Благодаря! –
У этой проблемы действительно нет решения. Поскольку ваше приложение предоставляется публично любому (особенно, если это JS), нет никакого способа по-настоящему отличить ваше приложение от самозванца, который имеет полный доступ к вашему исходному коду. – talkol