我们对App Engine对Google Cloud Endpoints的支持感到非常兴奋.
也就是说我们还没有使用OAuth2,并且通常使用用户名/密码对用户进行身份验证,以便我们可以支持没有Google帐户的客户.
我们希望将API迁移到Google Cloud Endpoints,因为我们可以免费获得所有好处(API控制台,客户端库,健壮性......),但我们的主要问题是......
如何向我们之前在现有API中检查有效用户会话+ CSRF令牌的云端点添加自定义身份验证.
有没有一种优雅的方法来实现这一点,而无需在protoRPC消息中添加会话信息和CSRF令牌等内容?
我最近开始使用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身份验证/授权一起使用?