使用 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
的消息
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 身份验证。
我正在尝试使用 Google IdP 在 these instructions 之后使用联合登录设置 VPN 连接。
之前,我已经使用 Google 配置了一个 saml-provider,它可以很好地通过 Google 使用 ARN 角色
向 AWS 控制台验证用户身份当我设置 VPN 连接时,它成功打开了浏览器并要求我 select 我的 google 帐户,但是在 select 输入该帐户后我收到一个错误来自 Google
的消息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,请使用
我还没有完整的答案,但我已经有了一个开始,而且我实际上已经克服了上面的 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 身份验证。