Google App Engine:使用自定义身份验证或 Open ID 时的端点身份验证

2024-01-31

我最近开始使用 Google App Engine。我打算使用 Flask 来提供网页和 Endpoints API,最好使用 Endpoints-Proto-Datastore 来处理其他所有内容。

从一开始,GAE 上的非 Google 身份验证机制似乎需要一些工作。如果您对我迄今为止发现的问题有任何了解,我将不胜感激:

自定义认证

如果您可以将 Open ID 提供程序编写为应用程序的一部分,请使用 Python-OpenID 之类的东西,并在同一工作流程中实现使用者,以便看起来像常规登录。通过这种方式,它可以很好地集成到 GAE Users API 提供的功能中。 我猜如果做得正确,users.get_current_user() 会工作得很好。

如果您想跳过编写自己的 OpenID 提供程序,而是使用与 NDB 集成的 Flask-Login 编写电子邮件/密码身份验证系统,那也应该没问题。然而,其中有一个令人费解的信息GAE 文档 https://developers.google.com/appengine/docs/python/users/userobjects说我可以实例化一个用户对象,如下所示:

user = users.User("[email protected] /cdn-cgi/l/email-protection")

然而,(没有user.put()方法在这里)users.get_current_user()仍然返回 None。那么构造用户对象有什么用呢?

端点授权

在 Endpoint-Proto-Datastore 滚动 API 的方法装饰器中包含 user=required 时,OAuth 似乎可以立即工作 - 在 API 资源管理器中测试它时您所要做的就是打开 OAuth 2.0 开关并选择一个有效的 Oauth 2.0 范围。那么,这是否意味着,如果我们实现了一个与 Users API 正确集成的 OpenID 提供程序,那么仅使用 Endpoints API 的 OAuth 魔力还不够?

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

自定义身份验证/其他 OpenID 实现如何与端点 API 身份验证/授权配合使用?


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

所以我所做的就是创建一个映射到 /_ah/spi/* 的自定义 ServletFilter 并拦截来自 HTTPServletRequest 的登录信息(如果它是 Endpoint-API-Request)。

到目前为止似乎有效,但我不确定这是否是正确的方法。但由于我在任何地方都没有找到非 oAuth-Auth 的示例,因此这是目前我最好的选择。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google App Engine:使用自定义身份验证或 Open ID 时的端点身份验证 的相关文章

随机推荐