问题标签 [identity-aware-proxy]

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.

0 投票
0 回答
314 浏览

user-interface - 使用外部身份提供程序时,Google Cloud Run 托管用户登录“重定向”会引发错误

当我允许未经身份验证的 AllUsers 访问或打开 IAM 以控制 Identity Aware Proxy 中的访问时,我有一个 Google Cloud App Engine 应用程序可以正常运行。但是,当我按照此页面https://cloud.google.com/iap/docs/cloud-run-sign-in上的说明启用使用外部身份的 Cloud Run 托管登录并尝试访问登录页面或Google Cloud Run 托管的登录页面,我在浏览器中收到以下错误。

“无法获取 URI /computeMetadata/v1/instance/service-accounts/default/token?scopes=https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/身份工具包”

就上下文而言,托管用户登录的 Google Cloud Run 服务设置为允许所有未经身份验证的用户。它应该重定向到 Google App Engine 网络应用程序。我认为这与权限或重定向有关,但我不知道如何解决。有什么想法吗?谢谢!

我试图通过重新部署 Cloud Run 服务、打开和关闭 IAP、在 IAM 和外部身份之间切换来修复,但没有成功。

感谢@John Hanley,我发现我的一个计算引擎服务帐户在项目中由于某种原因被禁用。重新启用部分解决了问题。我将花费更多时间来计算权限和重定向,以确保它们对齐。

我原本以为我完全回答了自己的问题并解决了我的问题。不幸的是,我在实现外部身份验证方法时只解决了其中一个问题。

另一个问题的描述:我启用了电子邮件/密码和谷歌作为提供者,但是当我点击通过谷歌进行身份验证的选项时,我在浏览器中收到以下文本:“请求的操作无效。”

在开发工具的控制台中,我收到以下错误:

获取https://www.googleapis.com/identitytoolkit/v3/relyingparty/getProjectConfig?key=*mykey*&cb=1599165379363 403

URL 栏中显示以下 url:

https:// .firebaseapp.com/__/auth/handler?apiKey= mykey &appName=%5BDEFAULT%5D-firebaseui-temp&authType=signInViaRedirect&providerId=google.com&customParameters=%7B%22hl%22%3A%22en%22%7D&scopes= profile&redirectUrl=https%3A%2F%2Fiap-gcip-hosted-ui-app-engine-app-myserver-uc.a.run.app % 2F%3FapiKey%3D mykey**&v=7.16.0&fw=FirebaseUI-web

mykeymyserver在这篇文章中被删除,不是实际值。

电子邮件/密码登录有效,但谷歌登录无效。我在这里想念什么?

0 投票
0 回答
369 浏览

kubernetes - IAP 连接器未将请求路由到本地。“没有健康的上游”

我正在尝试为我的后端服务部分设置身份感知代理,其中部分驻留在 GCP 和其他本地,根据以下链接 为本地应用启用 IAP 和本地IAP 概述中给出的说明应用

之后,按照指南,我最终处于部分状态,在 GCP 上运行在 https 端点上的服务可以通过 IAP 完全访问。但是,无法通过 pod* 和外部负载均衡器* 访问在本地运行的应用程序。

当前架构如下:

在此处输入图像描述

遵循的步骤

关于 GCP 项目

  • 在我的情况下,在具有一个子网的任何区域中创建了一个 VPC 网络(asia-southeast1)

  • 使用的 IAP 连接器https://github.com/GoogleCloudPlatform/iap-connector

  • 为 2 个域配置了映射。

    For app in GCP

  • 来源:gcp.domain.com

  • 目的地:app1.domain.com(服务于 https 端点)

    For app in on-prem(Another GCP project)

  • 来源:onprem.domain.com

  • 目的地:app2.domain.com(服务于 https 端点,但未暴露于互联网)

  • 在两个项目之间配置了 VPN 隧道,因此网络得到对等互连

  • 为部署创建的负载均衡器启用 IAP。

  • 添加了相应的帐户以允许访问具有 IAP 网络用户角色的服务。

On-prem

  • 在具有一个子网 (asia-southeast1) 的区域中创建 VPC 网络

  • 在该区域的 VPC 上创建 VM

  • 将该虚拟机分配给实例组

  • 创建内部 Https 负载均衡器并选择实例组作为后端

  • 使用 ssl 的安全负载均衡器 http

  • 为第一个项目设置 VPN 隧道

我试过什么?

  • 登录到 pod 并 ping 不同的 pod。所有吊舱都可以到达。
  • 登录到节点并在端口 80 和 443 上 ping 远程 VM 都可以访问。
  • 从 pod 内部 ping 远程虚拟机。不能达到。

预期行为

  • 用户向 app1.domain.com 上的负载均衡器发出请求,IAP 通过 OAuth 对用户进行身份验证和授权,并授予对 webapp 的访问权限。
  • 用户向 app2.domain.com 上的负载均衡器发出请求,IAP 使用 OAuth 对用户进行身份验证和授权,并授予对在本地运行的 webapp 的访问权限。

实际行为

  • 对 app1.domain.com 的请求在验证网站后会提示 OAuth 屏幕返回给用户。
  • 对 app2.domain.com 的请求在浏览器身份验证后提示 OAuth 屏幕返回 503 - “No healthy upstream”

笔记:

  • 我正在使用一个单独的 GCP 项目来模拟本地。
  • 这两个项目都通过 VPN 隧道对等。
  • 两个对等项目在同一区域中都有子网。
  • 我在我的本地项目中使用了内部 https 负载均衡器,以使我的虚拟机在我的宿主项目中可见,以便外部负载均衡器可以将请求路由到虚拟机的 https 端点。

** 我怀疑如果 pod 能够访问远程 VM,问题也可能会得到解决。这只是一个疯狂的猜测。

十分感谢大家。我期待着您的回复。

0 投票
3 回答
1600 浏览

google-app-engine - 如何在受 IAP 保护时使用 App Engine HTTP 运行 Cloud Scheduler 作业

我在 Google App Engine Standard 上有一个 Python 应用程序,它使用 Google Cloud Identity Aware Proxy (IAP) 进行保护。

我想每天使用 Cloud Scheduler 触发我的应用程序的一部分。(它正在调用 API、进行计算并将结果存储在 Google Cloud Storage 中。)

为此,我尝试在“App Engine HTTP”上触发 POST 请求。示例 URL:“/refresh_data”

运行作业时,我收到以下错误:

我找不到任何与“FAILED_PRECONDITION”错误相关的文档,所以我感觉有点卡在这里。

作为替代方案,我尝试触发对简单“HTTP”的 POST 请求,并将 IAP 中的 Owner 访问级别授予我用于 Cloud Scheduler 的服务帐户。这一次,我得到的错误信息如下:

我真的不明白如何使这项工作...... Cloud Scheduler 文档几乎没有记录“App Engine HTTP”选项,并且没有任何关于使用 IAP 的记录......

任何帮助将非常感激 :)

0 投票
1 回答
72 浏览

authentication - TestCafe 如何向 IAP 安全应用程序进行身份验证

有人可以指导一下 TestCafe 如何对 IAP 安全服务/应用进行身份验证吗?我试图在这里阅读本指南,但对我来说似乎有点复杂。如果有人之前做过这件事,如果你能分享,那就太好了。先感谢您。

0 投票
1 回答
447 浏览

google-cloud-platform - 如何从 MERN 堆栈应用程序中的 Identity Aware Proxy 获取用户组或角色

我有一个用例,其中有 2 个应用程序:

  • React SPA 前端,在 web.myportal.example 上运行
  • Node Express 后端,在 api.myportal.example 上公开一个 REST api

这两个应用程序都部署GCP Compute Engine在 Internet 上,并可从 Internet 访问。我能够配置 IAP 以防止未经授权的访问。我可以指定允许使用 UI 和 API 的电子邮件帐户列表。

我需要的是来自 GCP IAP 的自动化功能它有一个吗?简单示例 - 某些 API 端点应该只能由具有特定组/角色成员资格的人访问。如何从 IAP 中提取它?IAP 给我留下的唯一东西是一个GCP_IAAP_AUTH_TOKENcookie,由于它的定义,我什至不能使用它。

0 投票
1 回答
137 浏览

google-cloud-platform - 通过 IAP 验证从 GCE 到 BigQuery 的请求

我正在使用 GCE 实例和 GCP 提供的 python/jupyter 笔记本图像之一来进行一些数据分析。数据驻留在 BigQuery 中。默认情况下,该实例可以使用服务帐户访问 BiqQuery,但出于数据保护的原因,我必须使用个人用户帐户来请求数据。

我知道可以在 python 中使用编程 oauth 流来请求凭据以使用个人帐户对 BigQuery 进行身份验证,但是每次重新启动 ipython 内核时都必须以交互方式运行该流,并且涉及在浏览器中打开该授权 URL,然后粘贴秘密,这很烦人。

由于我使用 IAP 使用我的帐户登录 GCE 实例,有没有办法从 IAP 获取个人凭据以用于自动对 BigQuery 进行身份验证?

0 投票
0 回答
167 浏览

google-cloud-platform - GCP 身份识别代理 - 返回 403

默认情况下,GCP IAP(为 API 资源启用)重定向到 google 登录屏幕 - 在未经身份验证的请求的情况下。相反,我只需要返回 403。如果我缺少一个简单的设置,请告知?或者,请提出可能的解决方案。

0 投票
2 回答
345 浏览

google-app-engine - 无法启用对 Google App Engine IAP 的 CORS 请求

无法从 Safari 和 Brave 以外部身份登录用户。Safari 的解决方法是在设置菜单中禁用阻止跨站点跟踪。还有另一个使用 gcloud iap 设置设置的选项,如https://cloud.google.com/sdk/gcloud/reference/iap/settings/set中所述,我尝试过但我收到此错误:FAILED_PRECONDITION:前提条件检查失败。

我还尝试按照https://quabr.com/59905271/how-do-you-enable-cors-requests-to-a-google-compute-engine-iap-enabled-load-bala中的步骤操作,我得到了类似的错误。

0 投票
0 回答
274 浏览

google-cloud-platform - GCP - 启用外部身份提供程序

尝试添加外部提供者(github)来验证用户。但是,我在 Google Cloud Identity Platform 设置期间遇到了以下错误

更新 GCIP 设置时出错。您可以返回到您的配置并稍后重试

创建 Cloud Run Instance 步骤成功。添加授权域步骤失败

看起来服务器正在响应 PATCH 请求的 400 状态代码

更新 App Engine 上启用了身份识别代理 (IAP),以保护部署在应用引擎上的静态工件(python 运行时)

0 投票
0 回答
131 浏览

authentication - 使用具有基于承载令牌的用户身份验证的应用程序对 IAP 安全测试环境进行 TestCafe 身份验证

我们的测试环境在Google IAP之后,被测应用程序使用 Bearer 令牌进行用户身份验证。

为了访问测试环境,我获取了 Google JWT 令牌,然后Authorization通过扩展将其添加为所有请求的标头RequestHook

手动测试并登录 Google 帐户以访问测试环境时,此令牌设置为 cookie:

谷歌 IAP 登录后设置的 Cookie 示例

到目前为止,一切都很好。

当我尝试使用用户登录应用程序时会出现问题。我们的身份端点为用户返回不记名令牌,为了访问用户特定页面,我需要将此用户的不记名令牌作为请求的授权标头传递。

但由于上述 Google JWT 令牌实施,授权标头已在使用中。而且因为在登录应用程序后,对于需要用户的 Bearer 令牌的页面/端点,我得到 401 Unauthorized,我假设用户的 Bearer 令牌被上面的 Google JWT 令牌覆盖。

有没有办法解决这个问题?

据我了解,根据https://github.com/DevExpress/testcafe/issues/4063设置 cookie 并不是那么简单