1

我正在尝试编写一个命令行程序(Go 中的 CLI),它的工作方式应该与此类似:

  1. 用户将她的 Azure AD 用户名/密码凭据提交到 CLI。
  2. CLI 使用凭据对 Azure 进行身份验证,Azure 会为最终用户(例如 MFA)返回一个令牌或另一个质询。
  3. 如果返回另一个质询,CLI 将等待来自用户的输入(例如,MFA 代码)并将输入提交给 Azure AD MFA 输入。如果成功,Azure AD 会返回一个令牌。
  4. CLI 将返回的令牌和 SAML2 请求提交到 Azure AD SAML 端点,并从 Azure AD 返回 SAML2 响应。
  5. 然后,CLI 将 SAML2 响应提交到 AWS SAML 终端节点并取回 AWS IAM 临时凭证。

谢谢,

约西 C.

4

2 回答 2

1

不会假装我是该领域的超级专家,但我知道的是:
您描述的场景曾经由 Azure AD C# sdk 支持,但已被删除。Azure AD 确实希望您使用“常规”基于浏览器的登录流程或使用所谓的“设备代码”进行身份验证(在本地尝试 azure cli 以了解其工作原理)。根据您的目录的设置方式,Azure AD可能必须将您的请求传递给下游身份验证服务(例如,如果目录是使用 ADFS/saml 身份验证设置的),而不是自行处理。通过“硬编码”您的 cli 中的用户名/密码逻辑,您实质上将您的工具限制为仅使用配置的 Azure AD 目录,以便身份验证是本地的并且不

综上所述:构建必要的 http 调用并不是非常先进的。我最终使用了 Azure Powershell 模块并在本地设置了一个 http 代理,以便我可以检查身份验证调用,这非常简单。此处提供的链接中还有一些更多信息:ADAL username/password flow in .net standard 1.4

于 2018-12-02T20:11:09.047 回答
1

aws-azure-login CLI 实用程序通过实例化无头浏览器来访问 Azure AD 登录页面来进行登录。你应该研究他们的源代码。

https://github.com/dtjohnson/aws-azure-login

于 2018-12-03T06:25:47.133 回答