在 App Engine 上通过自定义域使用 Google IAP
Using Google IAP through custom domain on App Engine
在 App Engine 服务上启用自定义域现在变得轻而易举,启用 IAP(Google 身份感知代理)也轻而易举但是,我不知道如何获得 IAP 和我的自定义域一起工作!
https://myservice-dot-myapplication.appspot.com
和 https://myservice.mydomain.com
都触发了 IAP 同意屏幕,我可以在其中通过适当的用户登录(如 IAP Role/Member 中所配置)
https://myservice-dot-myapplication.appspot.com
让我在登录后看到我的应用程序
https://myservice.mydomain.com
将始终拒绝我使用 You don't have access
消息访问,就像我通过未经 IAP 配置授权的 Gmail 帐户登录一样
如果我禁用 IAP,我可以通过两个域(当然不需要身份验证,这是不希望的)并确认自定义域确实在使用适当的自动生成的证书。感觉好像我错过了 IAP 中的一个选项来配置别名域或类似的东西,但我找不到那个选项。
我错过了什么?还是目前根本不可能让 IAP 与自定义域一起使用?谢谢你的帮助! ❤️
注意:域名已更改以保护无辜者。
编辑:App Engine 团队怀疑 实际上是这里发生的事情,并且自定义域不受此 IAP 问题的影响。
似乎存在 App Engine 在某些情况下不将服务标识符传递给 IAP 的问题。看起来至少自定义域的某些用途可以触发它。作为解决方法,您可以授予对整个应用程序而不是特定服务的访问权限。我会让团队知道我们发现了另一个触发此问题的案例,我之前只在 IAP 订阅 Cloud Pub/Sub 主题后使用 App Engine 应用程序看到它。
(我不知道是 所有 自定义域的使用 运行 导致此错误还是这里发生了其他事情。App Engine 标准 v . 灵活的环境可能也会有所不同。)
如果您使用的是自动证书管理,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)
在 App Engine 服务上启用自定义域现在变得轻而易举,启用 IAP(Google 身份感知代理)也轻而易举但是,我不知道如何获得 IAP 和我的自定义域一起工作!
https://myservice-dot-myapplication.appspot.com
和https://myservice.mydomain.com
都触发了 IAP 同意屏幕,我可以在其中通过适当的用户登录(如 IAP Role/Member 中所配置)https://myservice-dot-myapplication.appspot.com
让我在登录后看到我的应用程序https://myservice.mydomain.com
将始终拒绝我使用You don't have access
消息访问,就像我通过未经 IAP 配置授权的 Gmail 帐户登录一样
如果我禁用 IAP,我可以通过两个域(当然不需要身份验证,这是不希望的)并确认自定义域确实在使用适当的自动生成的证书。感觉好像我错过了 IAP 中的一个选项来配置别名域或类似的东西,但我找不到那个选项。
我错过了什么?还是目前根本不可能让 IAP 与自定义域一起使用?谢谢你的帮助! ❤️
注意:域名已更改以保护无辜者。
编辑:App Engine 团队怀疑
似乎存在 App Engine 在某些情况下不将服务标识符传递给 IAP 的问题。看起来至少自定义域的某些用途可以触发它。作为解决方法,您可以授予对整个应用程序而不是特定服务的访问权限。我会让团队知道我们发现了另一个触发此问题的案例,我之前只在 IAP 订阅 Cloud Pub/Sub 主题后使用 App Engine 应用程序看到它。
(我不知道是 所有 自定义域的使用 运行 导致此错误还是这里发生了其他事情。App Engine 标准 v . 灵活的环境可能也会有所不同。)
如果您使用的是自动证书管理,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)