通过Okta通过SAML联合登录获取STS凭据的好方法是什么,以便在本地命令行工具中使用?

gen*_*ood 5 python saml boto amazon-web-services okta

Amazon Web Services API提供了AssumeRoleWithSAML端点,以允许用户交换来自AWS Security Token Service的一组临时API凭证的SAML断言。

Okta一样的SAML提供程序将在用户登录其Web UI并在该用户的企业后端(例如,企业LDAP)上对该用户进行身份验证后生成SAML声明

通常,此断言然后从用户浏览器中继到接受SAML断言的另一个Web服务(依赖方),以便对该第三方进行用户身份验证(例如,在使用Okta联合登录名使用户能够登录到AWS时)网络控制台)

使联盟用户能够通过Okta进行身份验证,获取断言,将该断言传递给STS并取回一组临时AWS API凭证的最佳方法,该凭证供用户随后可用于AWS命令行工具或本地python boto脚本?

  • 使用Python Webbrowser模块从python工具启动Web浏览
  • 将Web浏览器中的断言转换为命令行工具可用形式的一种灵活方法是什么?
  • 创建一个到本地运行的临时Web服务器(例如,flaskbottle的实例)的临时ngrok隧道,以供Okta重定向用户的Web浏览器以将断言传递给某些本地代码?
  • 通常,如何连接交互式网页和本地命令行工具的世界?

kgu*_*win 0

我还没有尝试过,但您可以查看GitHub 上的trueaccord/aws-saml-broker项目如何实现此目的。他们构建了一个小型 Web 应用程序,代表 Okta 联合用户进行 STS AssumeRole API 调用,并在屏幕上返回凭据。

有趣的是,他们似乎没有使用 AssumeRoleWithSAML 调用;相反,Web 应用程序本身就是 SAML 端点。您可能可以更新应用程序以使用该调用和/或提供更好的界面来将凭据传递给用户,而不是剪切和粘贴。