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

Cyr*_*ris 12 vpn amazon-web-services saml-2.0 idp

我正在尝试按照这些说明使用 Google IdP 的联合登录来设置 VPN 连接。

以前,我使用 Google 配置了一个 saml-provider,它可以很好地使用 ARN 角色通过 Google 对 AWS 控制台的用户进行身份验证

当我设置 VPN 连接时,它成功打开浏览器并要求我选择我的 google 帐户,但在选择该帐户后,我收到了来自 Google 的错误消息

在此处输入图片说明

根据这个帮助部分

验证 SAMLRequest 中 saml:Issuer 标记中的值是否与管理控制台的 SAML 服务提供商详细信息部分中配置的实体 ID 值匹配。该值区分大小写。

所以这是一个来自 AWS 而不是我的问题?Google IdP 与 VPN 身份验证完全兼容吗?(我发现这个文档提到了与 okta 的兼容性)

编辑

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

在此处输入图片说明

在此处输入图片说明

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

tek*_*ist 10

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

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

  • 天才!谢谢,我添加了一篇博客文章,因为还有很多其他部分我不明白。希望它对其他人有帮助:https://benincosa.com/?p=3787 (3认同)
  • 天哪,我在 ACS URL 之后有一个额外的尾部斜杠,在删除并检查 Google 界面中的“签名响应”后,它现在工作得非常好! (2认同)
  • 2021-08-12 在这里查看。我能够成功地使用此解决方法来使用“http”端点。 (2认同)

ale*_*son 6

@泰德施罗德-

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

我只是使用了反向代理:

mitmproxy                                        \
  --listen-port 35000                            \
  --mode        'reverse:http://127.0.0.1:35001' \
  --set         keep_host_header=true            
Run Code Online (Sandbox Code Playgroud)

如果您将 Google SAML 的 ACS URL 更改为https://127.0.0.1:35000并单击“测试 SAML 登录”,Google 将带您到https://127.0.0.1:35000,其流量将被重定向到http:// /127.0.0.1:35001。在浏览器中,我得到:

Authentication details received, processing details. You may close this window at any time.
Run Code Online (Sandbox Code Playgroud)

但是,使用 SAML-tracer 扩展,我发现 URL 不匹配(https://127.0.0.1:35000 vs. http://127.0.0.1:35001)。似乎 AWS VPN 客户端将其预期的 URL 广播为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
}
Run Code Online (Sandbox Code Playgroud)

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


Ted*_*der 5

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

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

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

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

示例场景

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

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


@alexandergunnarson

由于我没有发表评论的能力(非常感谢让这个简单的 stackOverflow)我不得不编辑我的答案以使其通过审查。

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