问题标签 [google-iap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-app-engine - 通过 App Engine 上的自定义域使用 Google IAP
现在,在 App Engine 服务上启用自定义域变得轻而易举,启用 IAP(Google 身份识别代理)也变得轻而易举。但是,我不知道如何让 IAP和我的自定义域一起工作!
- 两者
https://myservice-dot-myapplication.appspot.com
都https://myservice.mydomain.com
触发了 IAP 同意屏幕,我可以在其中通过适当的用户登录(在 IAP 角色/成员中配置) https://myservice-dot-myapplication.appspot.com
登录后会让我看到我的应用程序https://myservice.mydomain.com
将始终拒绝我访问该You don't have access
消息,就像我通过未经 IAP 配置授权的 Gmail 帐户登录一样
如果我禁用 IAP,我可以通过这两个域(当然不需要身份验证,这是不希望的)并确认自定义域确实在使用适当的自动生成的证书。感觉就像我错过了 IAP 中配置别名域或类似内容的选项,但我找不到该选项。
我错过了什么?还是目前根本无法让 IAP 与自定义域一起使用?谢谢你的帮助!❤️
注意:域名已更改以保护无辜者。
google-cloud-platform - 如何修改 IAP OauthClient
我刚刚注意到我的两个项目在 GCP 上具有相同的用于 IAP 的 OauthClient。我想更新一个 IAP 资源,以便我的每个项目都有唯一的 OauthClient,但我找不到如何.. 有什么帮助吗?
解决方法
所以这不是一个解决方案,但如果它发生在需要快速修复它的其他人身上。
我所做的只是删除了常见的 OauthClient。然后在我的项目上停用 IAP 并重新激活它。新客户端 Oauth 已自动分配!
谢谢 :)
node.js - 获取有关 App Engine 资源的 IAM 政策
我有一个带有 App Engine 应用资源的 GCP 项目。我使用 Identity-Aware Proxy 在控制台中的 App Engine 应用程序上设置用户和角色。我现在想以编程方式管理 IAP 中的用户。
目前,我可以使用以下方法获取项目中包含的“所有 Web 服务”的 IAM 策略:
如何获取 App Engine 应用资源的具体政策?
我更喜欢直接在应用程序资源上指定策略,而不是在“所有 Web 服务”上。
有关详细信息,请参阅 GCP IAP 屏幕截图: GCP IAP 上 App Engine 应用的政策
node.js - Google Cloud App Engine - req.user 未定义
我在谷歌云应用引擎上运行 nodejs reactjs 应用程序。我正在使用本地护照认证系统。
在我的本地主机上调用我服务器中的 req.user 会返回用户详细信息。然而,在谷歌云上运行我的应用程序时,它返回未定义(我在 api 的日志查看器中检查)。我猜这肯定有一个安全原因(虽然不是 100% 肯定),但是我不知道该怎么做才能解决它。我环顾四周,发现了谷歌云身份识别代理(IAP)——这是我需要实现的吗?还是我在叫错树?
我正在使用 cookie-session 和 passport 包。
编辑:我注意到我的会话 cookie 没有在我部署的应用程序(在谷歌云应用程序引擎上)中保存为 cookie,但是它保存在我的 localhost 应用程序中。我认为这就是问题所在。
编辑:我最终使用 JWT(JSON Web 令牌)作为我的身份验证方法。无论如何,我认为这是一个更好的解决方案。哪个解决了(解决)这个问题。
kubernetes - 在 Ingress 上启用 IAP
我已遵循有关如何在 GKE 上启用 IAP的文档。
我有:
- 配置同意屏幕
- 创建 OAuth 凭据
- 添加通用重定向 URL
- 将自己添加为
IAP-secured Web App User
并像这样编写我的部署:
当我查看我的入口时,我有这个:
我可以毫无问题地连接到网页,grafana 已启动并正在运行,但我也可以在没有经过身份验证的情况下连接(女巫是个问题)。
所以一切看起来都很好,但是 IAP 没有激活,为什么?
最糟糕的是,如果我手动启用它,它会起作用,但如果我重做kubectl apply -f monitoring.yaml
IAP 则会被禁用。
我错过了什么?
因为我的秘密值存储在秘密管理器中(并在构建时检索),所以我怀疑我的秘密中有一些故障(空格、\n 等),所以我添加了一个脚本来测试它:
现在 IAP 已通过正确的 OAuth 客户端正确启用,所以我的秘密是“干净的”
顺便说一句,我还尝试重命名这样的秘密变量(来自 client_id): * oauth_client_id * oauth-client-id * clientID (如后端文档中)
我还在后端写了这样的值:
但也不起作用。
勘误:
当我再次部署(在 Web UI 中启用它之后)时,IAP 被破坏的事实是我在此测试中的部署脚本的一部分(我之前进行了 kubectl delete)。
但是,我不能仅通过我的后端配置启用 IAP。
正如建议的那样,我已经提交了一个错误报告:https ://issuetracker.google.com/issues/153475658
图腾给出的解决方案
用这个改变给定的yaml:
后端与服务相关联,而不是与入口相关联……现在它可以工作了!
google-app-engine - 是否可以通过 IAP 保护 App Engine 应用程序同时拥有一些公共 URL?
我有一个 Google App Engine Standard (Python 3) 应用程序,我在 Google IAP 之后得到了保护。这很好用!但是现在我需要一些 web hook url 才能公开,以便其他服务可以访问它们,例如 SendGrid。有没有我没有看到的解决方案?
python - 如何从 Flask 中的 IAP 获取 jwt 令牌?
我在 Google App Engine 上有一个简单的 Flask 应用程序,受 Identity-Aware Proxy 保护。身份验证效果很好,但是当我想恢复在 GCP_IAAP_AUTH_TOKEN_XXXXX 中找到的 JWT 时,我只恢复了 GCP_IAP_UID cookie。我努力了
- google.auht jwt
- 烧瓶请求cookies
- 要求
此模块均不检索令牌。浏览器显示我需要的 cookie(显示下面链接的图片),但 Flask 无法捕获它们。欢迎任何想法
- 我尝试使用 google.auth jwt,但它是空的
- 我尝试使用 Flask request.cookies 但我只得到 cookie,UID(见代码)
- 我尝试使用 requests.cookies.RequestsCookieJar(最后一次尝试)但没有 cookie
我的应用程序使用 python 37 运行,以下是要求:
在我要验证 jwt的init .py代码下方。
最后但至少是一个日志文件:
google-cloud-run - 如何从 Cloud Run/GCP 外部调用 Cloud Run?
我有一个简单的 Spring Boot 服务 'say-hi' 在 /say-hi 下接受 GET 请求并返回 'hello'。它部署在托管 Cloud Run 中。假设我不想向公众开放它。现在我想做两件事:1. 允许开发人员(我自己)访问“say-hi” 2. 允许 Cloud Run 之外的另一个 Spring Boot 服务能够调用“say-hi”
对于我的目标 1:
奇怪的是 curl 命令不起作用,但 Insomnia 工作正常。基本上,我遵循了文档,将我的 google 帐户添加到角色/run.invoker,但 curl 命令显示 Network is unrechable:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" http://say-hi-0-1-0-q6g2cgbzna-ew.a.run.app:8080/say-hi -v
错误:
但是,如果我gcloud auth print-identity-token
单独运行以先获取令牌,然后从 Insomnia 客户端发送 GET 请求,它可以工作......我想知道为什么......
对于我的目标 2 ,我假设正确的会话在这里查看它。这是否意味着如果我想从受管理的 Cloud Run 外部(从我自己的笔记本电脑和其他 GKE 实例)访问“say-hi”,我需要为我的项目启用 IAP?如果是,如何将云运行与 IAP 集成?
kubernetes - 从服务帐户对受 Google IAP 保护的资源的编程访问被拒绝并出现无效签名错误
我最近在 GKE 集群中启用了 IAP。
- 集群版本:1.15.11-gke.11
我按照这里的说明操作:https ://cloud.google.com/iap/docs/enabling-kubernetes-howto
服务配置如下:
我使用的凭据是 OAuth 2.0 客户端 ID(类型:Web 应用程序)。
在确保在 Kubernetes 服务上激活 IAP 时受 IAP 保护的 API 端点的工作方式不同后,我编写了以下测试程序以确保可以从 JSON 文件“account.json”中给出的服务帐户访问该端点。
在编写此示例应用程序时,我查阅了以下文档:https ://cloud.google.com/iap/docs/authentication-howto#iap_make_request-go
- google.golang.org/api v0.23.0
- 去 1.12
但是当我运行它时,我只能看到以下响应。
正如您在此处看到的,访问被拒绝。
所以我认为用于对标头中的 JWT 令牌进行签名的签名可能是错误的。
但是我使用 jwt.io 确保了以下内容:
- 标头中使用的 JWT 令牌由调用者服务帐户的私钥签名
- 标头中使用的 JWT 令牌可以通过调用方服务帐户的公钥进行验证
- JWT 令牌使用 RS256 算法签名
我还查看了令牌:
没什么奇怪的。
所以我不确定这里发生了什么。如果我禁用 IAP,端点会返回正确的响应。
谁能给我一些提示我做错了什么?
google-kubernetes-engine - 如何通过 GCP Kubernetes Engine 中的 IAP 根据用户 ID 将用户请求路由到特定的 Docker 容器
我正在尝试为 GCP Kubernetes Engine 提供一个 hello-world 原型,使用 IAP 为特定用户分配容器,并将来自该用户的所有请求仅路由到该容器。它是在完全隔离的环境中保护用户敏感信息。
我按照@wilrof 的建议遵循了“为 GKE 启用 IAP”,并被困在向 BackendConfig 添加 iap 块,如下所示;
当我运行“kubectl apply -f backendconfig.yaml”时,它抱怨版本“cloud.google.com/v1”中的种类“BackendConfig”没有匹配项。我将第一行更改为 cloud.google.com/v1beta1,然后它说找不到命名空间“my-namespace”。不知道从这里去哪里。