1

Приводя Google App Engine inter module communication authorization проблемы у меня есть, что в Docs (communication between modules) говорит:Google App Engine авторизация между модулем связи (питон)

Вы можете настроить любой ручной или базовый модуль масштабирования принимать запросов от других модулей в вашем app, ограничив его обработчик , разрешите только учетные записи администратора, указав логин: admin для соответствующего обработчика в файле конфигурации модуля. С этим ограничением любой URLFetch из любого другого модуля в приложении будет автоматически аутентифицирован App Engine, и любой запрос , который не является приложением, будет отклонен.

И это именно та конфигурация у меня есть для моего модуля называется «api1». В моем файле app.yaml у меня есть:

# can accept requests from other modules. 
# with login: admin and they are authenticated automatically. 
- url: /.* 
    script: _go_app 
    login: admin 

Я пытаюсь сейчас, из другого модуля в том же самом приложении, чтобы сделать вызов службы, как предложено в документе с использованием urfetch.fetch() метод, и моя реализация:

from google.appengine.api import urlfetch, modules, app_identity 
from rest_framework.response import Response, status 

@api_view(['POST']) 
def validate_email(request): 
    url = "http://%s/" % modules.get_hostname(module="api1") 
    payload = json.dumps({"SOME_KEY":"SOME_VALUE"}) 

    appid = app_identity.get_application_id() 
    result = urlfetch.fetch(url + "emails/validate/document", 
          follow_redirects=False, 
          method=urlfetch.POST, 
          payload=payload, 
          headers={"Content-Type":"application/json") 

    return Response({ 
     'status_code': result.status_code, 
     'content': result.content 
    }, status=status.HTTP_200_OK) 

Согласно документации, указав follow_redirects = False, выборки() будет автоматически вставлять заголовок в моем вызове (я е ven попытался добавить его явно) с помощью «X-Appengine-Inbound-Appid»: MY-APP-ID. К сожалению, я получаю результат вызова перенаправления 302, если я его следую, это перенаправление на форму аутентификации. Это происходит на сервере разработки, а также в Production.

Не могли бы вы рассказать мне, как я могу позвонить в службу api1 внутри своего метода validate_email (принадлежащего другому модулю в том же приложении)? Есть ли другой способ аутентификации вызова, так как кажется, что предложенная внутри документации не работает?

Спасибо

ответ

0

Как написано here это гусеничный вопрос теперь google appengine public issue tracker. Поэтому каждый может пойти туда, чтобы проверить наличие обновлений.

В то же время я решил вопрос Извлечение login: admin из app.yaml и в обработчике моей службы я проверил вручную для существования заголовка X-Appengine-Inbound-Appid и его значение.

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