2016-01-28 4 views
0

Я ищу о том, чтобы ограничить вызовы API только моим Android-клиентом, в документации, о которой говорится, чтобы использовать OAuth, но, похоже, это вход в учетную запись Google.Ограничение доступа к конечным точкам GAE

Как я могу это сделать (или использовать этот OAuth) с каждым типом пользователя, с теми, у кого есть учетная запись Google (@ gmail.com), и те, у кого этого нет?

Спасибо за помощь.

ответ

1

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

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

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

Учитывая слабость этого подхода к злонамеренным актерам, я не думаю, что в Google Cloud Endpoints есть встроенная поддержка, хотя я полагаю, что близок service account.

Смежные вопросы