我最近开始使用Google App Engine.我打算使用Flask来提供网页和端点API,最好使用Endpoints-Proto-Datastore来处理其他所有内容.
从一开始,GAE上的非Google身份验证机制似乎需要一些工作.我很感激到目前为止我发现的任何问题:
自定义验证
如果您可以将Open ID提供程序编写为应用程序的一部分,请使用类似Python-OpenID的内容,并在同一工作流程中实现使用者,以使其看起来像常规登录.这样,它可以很好地集成到GAE Users API提供的内容中.我猜这是否正确,users.get_current_user()将正常工作.
如果你想跳过编写自己的OpenID提供程序,而是使用与NDB集成的Flask-Login编写一个电子邮件/密码auth系统,那也应该没问题.但是,GAE文档中有一些令人费解的信息说我可以像这样实例化一个用户对象:
user = users.User("XYZ@XYZ.com")
但是,(这里没有user.put()方法)a users.get_current_user()仍然返回None.那么构建用户对象的用途是什么呢?
端点授权
在针对Endpoint-Proto-Datastore滚动API的方法装饰器中包含user = required时,OAuth似乎立即起作用 - 在API explorer中测试它时所要做的就是打开OAuth 2.0开关并选择一个有效的Oauth 2.0范围.那么这是否意味着如果我们实现一个与User API正确集成的OpenID提供程序,那么使用端点API的OAuth魔法是不够的?
在这里,似乎构建用户对象无助于满足身份验证要求.
自定义身份验证/另一个OpenID实现如何与Endpoint API身份验证/授权一起使用?