【发布时间】:2017-06-16 01:42:19
【问题描述】:
不久前,Google Apps(现在称为 G Suite)域的 App Engine 相关设置已移至 Google Cloud Console。
截至目前,已记录的限制关联 G Suite 用户访问 App Engine 实例的方法是通过此 Google Cloud Console 页面:
当您点击该页面中的 [编辑] 时,在“Google 身份验证”下,您可以在“Google Accounts API”和“Google Apps 域”(实际上应该称为“G Suite 域”)之间切换。
该下拉菜单下方有一个输入框,但没有说明应该在此处输入什么。经过反复试验,我发现它应该是关联的 G Suite 的域名。
在部署到 App Engine 的最小 Hello World 应用中,我们将身份验证选项设置为:
login: required
请注意,我们应用的某些服务是用 Python 编写的,而另一些是用 Java 编写的。
通过 [project-id].appspot.com 主机名访问 App 引擎实例可以正常工作,Google 将提示输入相关 G Suite 上的凭据,并通过身份验证过程适当地重定向到目标路径名。
问题在于,在通过自定义域访问 App Engine 实例时,身份验证根本不起作用。这将显示 500,服务器日志显示:
只有当请求来自该域的子域或已通过 Google Apps 控制面板获得批准时,才能对 Google Apps 域 example.com 执行身份验证。见https://developers.google.com/appengine/articles/auth
该错误消息中的链接页面不再存在,即它已被替换为一般描述身份验证的页面。从在线缓存中提取旧页面,我可以看到它描述了将 App Engine 项目添加到 Google Apps 服务页面的旧 Google Apps 方式,但截至目前,此功能已被删除,或迁移到 Google Cloud Console。
对于它的价值,除了指向我上面截图页面的文档之外,Google 支持无法提供任何帮助。
这里有没有人设法通过自定义域限制 App Engine 对 G Suite 帐户的访问?还是这个功能刚刚坏掉了?
特别是我正在寻找在 Python 和/或 Java GAE 应用程序的上下文中解决此问题的答案,以及演示如何在需要时以编程方式解决此问题的代码。
【问题讨论】:
-
服务是否产生了用 python 或 java 编写的特定 500 错误?
-
我们遇到错误的特定服务是用 Python 编写的,但如果事实证明限制对 G Suite 帐户的访问仅适用于 Java 应用程序,我们将迁移。因此问题的范围很广。
-
从截图中看不清楚,但您是否也有在“自定义域”下列出的 G Suite 域,并且您是通过自定义域而不是 apppot 向应用程序发出请求.com 域?
-
两者都同意,实际上我在文中提到了这一点。
-
此身份验证是否仅适用于我可以在处理程序中设置
loginfield 的标准 GAE?我想在灵活的 GAE 中使用这种机制,但目前它不起作用。我的页面向所有人广泛开放。
标签: java python google-app-engine google-cloud-platform