1

现在,在 App Engine 服务上启用自定义域变得轻而易举,启用 IAP(Google 身份识别代理)也变得轻而易举。但是,我不知道如何让 IAP我的自定义域一起工作!

  1. 两者https://myservice-dot-myapplication.appspot.comhttps://myservice.mydomain.com触发了 IAP 同意屏幕,我可以在其中通过适当的用户登录(在 IAP 角色/成员中配置)
  2. https://myservice-dot-myapplication.appspot.com登录后会让我看到我的应用程序
  3. https://myservice.mydomain.com将始终拒绝我访问该You don't have access消息,就像我通过未经 IAP 配置授权的 Gmail 帐户登录一样

如果我禁用 IAP,我可以通过这两个域(当然不需要身份验证,这是不希望的)并确认自定义域确实在使用适当的自动生成的证书。感觉就像我错过了 IAP 中配置别名域或类似内容的选项,但我找不到该选项。

我错过了什么?还是目前根本无法让 IAP 与自定义域一起使用?谢谢你的帮助!❤️

注意:域名已更改以保护无辜者。

4

2 回答 2

2

编辑:App Engine 团队怀疑https://stackoverflow.com/a/60140415/7764352实际上是这里发生的事情,并且自定义域不受此 IAP 问题的影响。

在某些情况下,App Engine 似乎没有将服务标识符传递给 IAP,这似乎存在问题。看起来至少自定义域的某些用途可以触发这种情况。作为一种解决方法,您可以授予对整个应用程序而不是特定服务的访问权限。我会让团队知道我们发现了另一个触发这种情况的案例,我之前只看到过 IAP 背后的 App Engine 应用订阅了 Cloud Pub/Sub 主题。

(我不知道是自定义域的所有使用都遇到了这个错误,还是这里发生了其他事情。App Engine Standard v. Flexible environment 可能也会产生影响。)

于 2020-02-08T19:00:35.800 回答
2

如果您使用自动证书管理,则https://myservice.mydomain.com可能实际上并未路由到您期望的服务。

默认情况下,自定义域映射始终路由到默认服务。通配符域可以在匹配映射的“*”部分时自动路由到其他版本或服务(请参阅https://cloud.google.com/appengine/docs/standard/nodejs/mapping-custom-domains#wildcard_mappings) . 不幸的是,通配符域还不支持自动证书管理。

只要您没有太多要路由的服务,就有一种方法可以使用托管证书并仍然路由到多个服务:

  • 为您要使用的每个子域添加自定义域名条目
  • 在 dispatch.yaml 中添加一个调度规则,将每个子域映射到正确的服务(请参阅此处的文档:https ://cloud.google.com/appengine/docs/standard/nodejs/reference/dispatch-yaml )
于 2020-02-09T19:20:21.077 回答