Google app engine Google应用程序引擎:使用自定义身份验证或开放ID时的端点身份验证

Google app engine Google应用程序引擎:使用自定义身份验证或开放ID时的端点身份验证,google-app-engine,oauth-2.0,openid,google-cloud-endpoints,Google App Engine,Oauth 2.0,Openid,Google Cloud Endpoints,我最近开始使用谷歌应用程序引擎。我打算使用Flask为web页面和Endpoints API提供服务,最好是使用Endpoints原型数据存储来提供其他一切 从一开始,GAE上的非Google身份验证机制似乎需要一些工作。我希望大家能对我目前发现的问题有所了解: 自定义身份验证 如果您可以编写一个开放ID提供者作为应用程序的一部分,那么可以使用类似Python OpenID的东西,还可以在同一工作流中实现一个使用者,使其看起来像常规登录。通过这种方式,它很好地集成到GAE用户API提供的内容中。

我最近开始使用谷歌应用程序引擎。我打算使用Flask为web页面和Endpoints API提供服务,最好是使用Endpoints原型数据存储来提供其他一切

从一开始,GAE上的非Google身份验证机制似乎需要一些工作。我希望大家能对我目前发现的问题有所了解:

自定义身份验证

如果您可以编写一个开放ID提供者作为应用程序的一部分,那么可以使用类似Python OpenID的东西,还可以在同一工作流中实现一个使用者,使其看起来像常规登录。通过这种方式,它很好地集成到GAE用户API提供的内容中。 我猜如果这是正确的,users.get\u current\u user()将很好地工作

如果您想跳过编写自己的OpenID提供程序,而是使用与NDB集成的Flask Login编写电子邮件/密码身份验证系统,那也没关系。然而,文档中有一条令人费解的信息说我可以像这样实例化一个用户对象:

user=users.user(“XYZ@XYZ.com“”

但是,(这里没有
user.put()
方法)一个
users.get\u current\u user()
仍然返回无。那么,构建用户对象有什么用呢

端点授权

在端点原型数据存储滚动API的方法装饰器中包含user=required时,OAuth似乎马上就可以工作了——在API资源管理器中测试它时,您所要做的就是打开OAuth 2.0开关并选择一个有效的OAuth 2.0范围。那么,这是否意味着如果我们实现了一个与用户API正确集成的OpenID提供者,那么使用端点API的OAuth魔力是不够的

在这里,构造用户对象似乎也无助于满足身份验证需求


自定义身份验证/另一个OpenID实现如何与端点API身份验证/授权一起工作

我不想使用oAuth,而是一种更简单的用户/令牌身份验证形式

因此,我所做的是创建一个定制ServletFilter,它映射到/_ah/spi/*并从HTTPServletRequest(如果是端点API请求)截取登录信息

到目前为止似乎有效,但我不确定这是否是可行的方法。但由于我在任何地方都没有发现非oAuth Auth的示例,所以这是我目前最好的解决方案


希望从@bossylobster或@Dan Holevoet获得一些最佳实践提示。

问得好。我想做大致相同的事情:使用用户名/令牌实现某种“基本”身份验证。尝试使用servletFilter,但似乎servletFilters不适用于/\u ah/api URL。