2016-04-07 4 views
1

Есть ли способ точно знать, что сообщение, полученное движком приложения, находится в службе Google PubSub? В настоящее время служба PubSub получает 302 URL-адресов, настроенных как «login: admin» в appengine app.yaml. Поэтому он продолжает повторять попытку.Аутентификация сообщений PubSub Push в AppEngine

Я бы предположил, что это будет вести себя как задачи в Appengine и автоматически аутентифицироваться на URL-адресах «login: admin».

ответ

1

FAQ рекомендует, чтобы при настройке подписки на PubSub вы добавляли общий секретный токен в качестве параметра запроса, который вы проверяете в своем обработчике.

Если вы дополнительно хотели бы проверить, что сообщения происходит от Google Cloud Pub/Sub, вы можете настроить конечную точку только принимать сообщения, которые сопровождаются секретного маркера аргумента, например,

https://myapp.mydomain.com/myhandler?token=application-secret.

Поскольку PubSub не использует аутентификацию Appengine, и мы используем маркер для проверки подлинности не следует указать login ключ в записи app.yaml для этого обработчика. Вот пример:

main.py

class Handler(webapp2.RequestHandler): 

    def post(self): 
     token = self.request.params['token'] 

     if token != 'foo': 
      self.abort(401, 'Not authorized') 

     # do stuff 


app = webapp2.WSGIApplication([ 
    ('/', Handler), 
], debug=True) 

app.yaml

runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /.* 
    script: main.app