【问题标题】:Authenticating PubSub Push messages in AppEngine在 AppEngine 中对 PubSub Push 消息进行身份验证
【发布时间】:2016-07-28 07:53:15
【问题描述】:
有没有办法确定应用引擎收到的消息来自 Google PubSub 服务?目前,PubSub 服务在 appengine app.yaml 中配置为“login: admin”的 URL 上获得 302。所以它一直在重试。
我本来希望它的行为类似于 Appengine 中的任务,并自动对“login:admin”URL 进行身份验证。
【问题讨论】:
标签:
google-app-engine
google-cloud-pubsub
【解决方案1】:
FAQ 建议在设置您的 PubSub 推送订阅时,您将共享秘密令牌作为您在处理程序中检查的请求参数。
如果您还想验证消息是否来自 Google Cloud Pub/Sub,您可以将端点配置为仅接受带有秘密令牌参数的消息,例如,
https://myapp.mydomain.com/myhandler?token=application-secret.
由于 PubSub 不使用 appengine 身份验证并且我们使用令牌进行身份验证,因此您不应在您的 app.yaml 条目中为此处理程序指定 login 密钥。这是一个例子:
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