使用 Google IdP 联合登录的 AWS VPN - app_not_configured_for_user

AWS VPN using federated login with Google IdP - app_not_configured_for_user

我正在尝试使用 Google IdP 在 these instructions 之后使用联合登录设置 VPN 连接。

之前,我已经使用 Google 配置了一个 saml-provider,它可以很好地通过 Google 使用 ARN 角色

向 AWS 控制台验证用户身份

当我设置 VPN 连接时,它成功打开了浏览器并要求我 select 我的 google 帐户,但是在 select 输入该帐户后我收到一个错误来自 Google

的消息

根据this help section

Verify that the value in the saml:Issuer tag in the SAMLRequest matches the Entity ID value configured in the SAML Service Provider Details section in the Admin console. This value is case-sensitive.

所以这是来自 AWS 而不是我的问题? Google IdP 是否完全兼容 VPN 身份验证? (我发现 this doc 提到与 okta 的兼容性)

编辑

感谢下面的一些答案,我设法让它与 Google IdP 一起工作。这是相关 SAML Google 应用程序屏幕的屏幕截图(请注意,对于组,我最终添加了员工部门,但我想其他任何方法都可以)

为了能够在 G Suite 界面中保存以 http:// 开头的 ACS URL,请使用 提供的技巧:打开检查器 > 网络选项卡,执行请求将 URL 保存为 https,然后右键单击将其复制为 cURL,将 https 替换为 http,粘贴到常规控制台中,就可以了。

我还没有完整的答案,但我已经有了一个开始,而且我实际上已经克服了上面的 403 错误。可以在此处的 AWS Client VPN 信息中找到所有这一切的关键:https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/client-authentication.html

查找标题为“用于创建应用程序的服务提供商信息”的部分。

关键是这些是ACSURL和需要用到的Entity ID。不幸的是,G Suite 不允许您将 ACS URL 设置为 non-https URL 并且显然 AWS Client VPN 应用程序不会为 ACS 提供安全的 URL URL(SAML 身份验证响应所在的位置)。

因此,如果您将实体 ID 设置为“urn:amazon:webservices:clientvpn”并按照说明安装 G Suite SAML 应用程序,您将通过 403。但是,由于 ACS URL 无法指定,您可能会从 ACS URL 收到身份验证响应的任何错误消息。

示例场景

  • 如果您像对 AWS 控制台 SSO 一样将其设置为 https://signon.aws.amazon.com/saml",您会从 AWS 登录中收到一条错误消息,指出 SAML 响应无效。
  • 如果您将其设置为 https://127.0.0.1:35001,那么您会从浏览器收到一条消息,指出“站点无法提供安全连接”。

如果有人对此有任何进一步的了解,我很想听听。与此同时,我将研究 non-AWS 可能实际上支持 G Suite 作为 SAML IdP 的 OpenVPN 客户端。


@alexandergunnarson

由于我无法发表评论(非常感谢让这个简单的 Whosebug 变得如此简单)我不得不编辑我的答案以使其通过审查。

不幸的是,我们没有,而且可能在一段时间内不会有 G Suite Enterprise,因为它对我们的启动环境来说太贵了。所以 OIDP 现在对我们来说不是一个可行的选择。我认为这会起作用。很高兴知道它确实如此。

@Ted Schroeder —

以前的方法(或者,普通的 Google 不起作用)

我刚刚使用了反向代理:

mitmproxy                                        \
  --listen-port 35000                            \
  --mode        'reverse:http://127.0.0.1:35001' \
  --set         keep_host_header=true            

如果您将 Google SAML 的 ACS URL 更改为 https://127.0.0.1:35000 and click "Test SAML Login", Google will take you to https://127.0.0.1:35000, whose traffic will be redirected to http://127.0.0.1:35001。在浏览器中我得到:

Authentication details received, processing details. You may close this window at any time.

然而,使用 SAML-tracer 扩展,我发现存在 URL 不匹配(https://127.0.0.1:35000 vs. http://127.0.0.1:35001). Seems like the AWS VPN Client is broadcasting its expected URL as being http://127.0.0.1:35001。所以这似乎不可行。

当前方法(或者,Auth0+Google 有效)

我尝试改用 Auth0,并且成功了!有一些麻烦——例如,创建一个新的 Auth0 应用程序,转到插件并启用 SAML2 Web 应用程序,将应用程序回调 URL 设置为 http://127.0.0.1:35001,然后在设置中使用以下内容:

{
  "audience": "urn:amazon:webservices:clientvpn",
  "mappings": {
    "user_id": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier",
    "email": "NameID",
    "name": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name",
    "given_name": "FirstName",
    "family_name": "LastName",
    "upn": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn",
    "groups": "memberOf"
  },
  "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect",
  "signResponse": true
}

然后,如果用户从 AWS 下载 VPN 配置并使用 AWS VPN 客户端应用程序,他们将被带到 Auth0 登录屏幕,在那里他们可以通过 Google 登录。瞧! (然后为了安全,您需要添加 Auth0 规则以仅授予某些 users/groups 授权。)

我找到了解决方法,无法在 GSuite SAML 应用程序页面上输入 http://127.0.0.1:35001 作为 ACS URL。 Google 管理控制台仅对 https 要求进行 client-side 验证,因此您可以使用 Chrome 控制台监控修改 ACS 时进行的网络调用 URL.

然后,您可以将其复制为 curl 命令并将 https 更改为 http

我也遇到了同样的问题。就我而言,我需要为我尝试登录的帐户打开 two-factor 身份验证。