Сделать API Explorer приватным

Можно ли вообще отключить апи эксплорер или ограничить доступ к нему?

Я заметил в своем приложении несколько журналов, которые поступают из-за неудачных запросов, выполненных из браузера. Мой API используется только приложением для Android, поэтому единственное место, откуда они могут быть получены, — это обозреватель API. Кроме того, доступ к API ограничен 1 веб-клиентом и 1 идентификатором клиента Android.


person Gabriel Ittner    schedule 13.03.2013    source источник


Ответы (3)


К сожалению нет. Проводник API работает с помощью службы обнаружения, связанной с вашим API, которая на самом деле не является частью вашего бэкэнда, поэтому вы не можете указать аутентификацию или видимость для этих URI.

Метод list из службы обнаружения используется для создания списка на API Explorer, использующее ваше приложение в качестве основы:

открытие.apis.list:

your-app-id.appspot.com/_ah/api/discovery/v1/apis

Когда кто-то щелкает один из API в списке, полный документ обнаружения извлекается для этих apiName и apiVersion с использованием метода getRest из службы обнаружения:

открытие.apis.getRest:

your-app-id.appspot.com/_ah/api/discovery/v1/apis/{apiName}/{apiVersion}/rest

person bossylobster    schedule 13.03.2013
comment
Есть ли у вас какие-либо рекомендации для административной части приложения? Я вижу что-то вроде /_ah/spi/{имя класса службы}.{метод}.. Можно ли добавить несколько обработчиков, соответствующих /_ah/spi/.*? - person 12345; 21.04.2013
comment
Я бы порекомендовал вам реализовать административную часть в методах обработчика. endpoints.api_server предназначен для создания единого обработчика для всех ваших API. - person bossylobster; 21.04.2013
comment
Но как мне запретить кому-либо удалять всю мою базу данных (хранилище данных)? - person InsaurraldeAP; 10.12.2013

Если вы ищете способы предотвратить выполнение API, ознакомьтесь с Облачные конечные точки: контролируйте, кто может выполнять API через API Explorer

person sam    schedule 01.03.2017

конечные точки упрощают авторизацию, и вы можете получить текущего пользователя. Вы должны использовать аутентификацию, чтобы гарантировать, что люди не будут связываться с вашим личным API — в противном случае люди могут отследить, какой тип сообщения или получить запросы, которые вы отправляете в любом случае — аутентификация всегда является хорошей идеей, а не попыткой сохранить ваш API в секрете.

Если вы создаете секретный продукт и не хотите, чтобы ваш конкурент узнал об этом, возможно, вы могли бы использовать какой-нибудь метод запутывания на бэкэнде и на вашем клиенте, который сделает API нечитаемым.

Кроме того, пользователь, возившийся с вашим API, не должен нарушать вашу базу данных, а если и сломает, то он должен сломать ее только для пользователя, который ведет себя глупо. Наличие логики в вашем клиенте для того, как API используются, чтобы серверная часть не ломалась, является плохой идеей - внутренние API должны заботиться о себе и не беспокоиться о том, как и почему они используются и кем и для какой цели.

person robert king    schedule 30.09.2014
comment
Я видел, как люди говорят это, но можете ли вы привести пример, когда конечные точки в GAE требуют аутентификации без учетной записи Google (а только с идентификатором клиента, указанным в консоли разработчика)? Например, в моем случае у меня есть API, который я использую из JavaScript, но я не хочу, чтобы другие использовали мои API... например, один из моих API возвращает ответы из опроса с токеном. Я не хочу, чтобы произвольный пользователь, использующий API, выгружал все ответы на опросы, но анонимный пользователь на сайте должен иметь возможность видеть ответы на опросы с помощью своего токена. - person SimplicityGuy; 10.04.2015
comment
интересный момент. Не могли бы вы сделать жетоны неугадываемыми? Было бы неплохо иметь возможность ограничить доступ к API для разработчиков, связанных с облачным проектом. (а также для предоставления доступа к определенным доменам). Возможно, это было бы слишком много функций для конечных точек - проще обернуть конечные точки на серверной части IMO. - person robert king; 10.04.2015
comment
Да, токены невозможно угадать (соленые, временные и уникальные). Я провел последний час, пытаясь просто использовать идентификатор клиента, и хотя я могу предотвратить доступ к API с его помощью, я не могу избежать страницы входа в Google... Но я хочу войти в систему, по сути, с тем, что — это идентификатор клиента, так как он уже имеет ограничения на то, откуда можно вызывать API. - person SimplicityGuy; 10.04.2015
comment
Я думаю, что я мог бы использовать ключ API. Однако документы о том, как передать ключ API, отсутствуют. Я предполагаю, что они передаются как заголовок, но какой ключ? Я ожидаю, что App Engine проверит заголовок с помощью ключа API, чтобы убедиться, что он соответствует наложенным на него ограничениям реферера. Есть примеры? - person SimplicityGuy; 10.04.2015
comment
не уверен, что вы спрашиваете, извините. Вы пытались использовать клиент JavaScript GAPI? может быть, задать новый вопрос на stackoverflow - person robert king; 10.04.2015