Razbezhkin
@Razbezhkin
программист, преподаватель

Как разрешить доступа к API только от определенного приложения Android (IOS, web)?

Можно ли на стороне сервера, там где работает API ограничить к нему доступ так, чтобы обращаться могли только определенные приложения (Android, web с определенных url, IOS), причем без проверки пользователей?

Раньше я считал, что такое ограничение реализовать невозможно, т.к. сервер просто не сможет проверить подлинность источника.

Сегодня я засомневался, когда увидел настройки доступа к Google Maps API, там для API ключа есть настройки, ограничивающие его использование определенным приложением android, для этого используются "контрольная сумма сертификата SHA-1".

Возникает вопрос, как они это делают и насколько это ограничение устойчиво. Закрытый ключ в приложении быть не может, иначе его скомпрометируют, если для доступа используется открытый ключ, то почему бы злоумышленнику не извлечь его из приложения и не использовать в запросе?

Если есть объяснение схеме работы у гугла, поделитесь, пожалуйста, своими соображениями.

Спасибо.
  • Вопрос задан
  • 387 просмотров
Пригласить эксперта
Ответы на вопрос 4
@igorhak
Сам по себе
Возможно определить клиента по заголовкам запроса, которые подделать не составляет труда. Ну, а у Гугла скорее всего стоит фильтр на ключ по типу клиента.
Ответ написан
khegay
@khegay
Founder, NNDB Kazakhstan
Возможно, реализация сделана через User-Agent, но это не точно
Ответ написан
samodum
@samodum
Какой вопрос - такой и ответ
Думаю, что здесь гугл в своих Картах пользуется какими-то внутренними недокументируемыми механизмами, зная о приложении больше, чем обычные разработчики. Возможно, что даже не передают эту информацию напрямую из приложения Карт, а используя некий механизм внутри системы. Поскольку, если передавать все заголовки и данные из приложения, то их легко отследить и скопировать на другое устройство/систему.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы