Я создал пользовательский API конечных точек с Google App Engine, который взаимодействует с веб-клиентом, и я успешно протестировал его с помощью API-обозревателя и веб-клиента.Облачные конечные точки не требуют аутентификации
Теперь я пытаюсь добавить аутентификацию в API конечных точек облака через эти instructions, используя web client ID. Я могу получить аутентификацию для работы, но не могу получить аутентификацию .
WEB_CLIENT_ID = # Some Client ID
@endpoints.api(name="AppApi", version="v1", allowed_client_ids=[WEB_CLIENT_ID], audiences=[WEB_CLIENT_ID], scopes=[endpoints.EMAIL_SCOPE])
class AppApi(remote.Service):
@endpoints.method(TestRequestMessage, TestResponseMessage, name="test.get", path="test/get")
def TestGet(self, request):
response = TestResponseMessage()
# Return a blank response message
return response
Я намеренно пытается исключить endpoints.API_EXPLORER_CLIENT_ID
в allowed_client_ids
, потому что я хочу, чтобы убедиться, что она не будет выполнена для запросов, которые не прошедших проверку подлинности с помощью API Explorer.
Когда я перехожу к исследователю API, я могу сделать успешные запросы без проверки подлинности. Когда я включаю проверку подлинности с помощью API-обозревателя, он просит включить аутентификацию по электронной почте, чтобы она работала, но она не требует аутентификации для вызовов.
Как вы получаете API конечных точек Google для проверки подлинности для каждого вызова?
Я также не выполняю какую-либо специфическую для пользователя работу с API, поэтому я просто пытаюсь использовать аутентификацию веб-клиента с использованием учетных данных веб-клиента, так что это веб-клиент, запрашивающий информацию. Пользователей не существует.
Таким образом, авторизация с конечными точками для веб-клиента по-прежнему требует проверки подлинности на уровне пользователя? Что делать, если я просто хочу убедиться, что только клиент веб-приложения подключается к конечным точкам, но не хочет ли беспокоить отдельного пользователя для входа или авторизации? – Jabberwockey
Ничего, я был в состоянии понять это. Мне нужно было использовать 'endpoints.get_current_user()! = None' (python) для проверки каждого вызова, который действительно есть пользователь, который разрешил текущий вызов. По-видимому, не существует способа авторизации вызовов конечных точек только с помощью приложения, не используя OAuth от пользователя. Было бы неплохо, если бы был способ сказать «Разрешить только вызовы из этого приложения» с конечными точками, но это работает пока. Благодаря! – Jabberwockey
Эй, я рад, что вы поняли, как делать пользовательские авторизации без моего возвращения, поскольку я читал ваш комментарий раньше, но не мог сесть писать. Что касается вашего последнего комментария, нельзя сказать, что теперь есть способ сделать call-context auth - это именно то, для чего нужны идентификаторы/секреты клиента. Пользовательский auth предназначен для того, хотите ли вы проверить, что учетная запись пользователя OAuth2 для входа в систему разрешила ваше приложение иметь область userinfo.email и имеет действительный маркер-носитель, отправленный вместе с запросом. – Nick