【问题标题】:Can I use the Azure Active Directory libraries (ADAL) to get a SAML response from Azure AD?我可以使用 Azure Active Directory 库 (ADAL) 从 Azure AD 获取 SAML 响应吗?
【发布时间】:2019-09-10 20:44:45
【问题描述】:

我想写一个脚本:

  1. 使用device code mechanism 将用户登录到 Azure AD
  2. 构造一个SAML SSO request URL
  3. 使用步骤 1 中的身份验证发出 SAML 请求
  4. 取回 SAML 响应,并对其进行处理(不仅仅是在浏览器中打开)

有没有办法使用 Azure AD 库来做到这一点?

我觉得这应该是可能的,我只是错过了一些东西。有任何想法吗? 我尝试了很多东西并尝试了 Python 库中的代码,但无济于事。

我更喜欢 Python,但我可以在 Docker 映像中运行它,所以语言不是那么重要。


上下文

在工作中,我们使用 Azure AD 进行身份验证,我们可以使用 Azure AD 和 SSO SAML 登录 AWS 控制台。

如果我构建了一个适当的 SAML 请求 URL 并在我的浏览器中打开它,我将通过浏览器内身份验证流程。当我登录时,Azure AD 返回一个 SAML 响应,最终我的浏览器将我重定向到 AWS 控制台。这是表单的 URL:

https://login.microsoftonline.com/11111111-1111-1111-11111111111/saml2?SAMLRequest=<base64 encoded string>

现在我想为 AWS 凭证执行类似的流程 – 发出 SAML 请求以登录,读取 SAML 响应,使用 assume_role_with_saml 创建凭证,然后将其写入 ~/.aws/credentials。我认为这意味着我必须直接访问 SAML 响应——浏览器只是将我放在重定向链的末尾。

有什么想法吗?


其他想法

  • 我知道 aws-azure-login npm package 通过旋转无头浏览器来实现这一点 - 但它没有维护,我发现它是一个不稳定的。

  • 1234563这行得通,但是以这种方式复制 cookie 感觉很奇怪。此外,如果我通过 ssh 连接到远程服务器,它也不起作用。
  • 我找到了来自 a year and a half ago 的答案,上面写着“ADAL.JS 不支持 SAML2 令牌”。想知道这是否可能已经改变,还是我仍然卡住了?

【问题讨论】:

  • 看看github.com/oktadeveloper/okta-aws-cli-assume-role,它可以满足您的需求,但使用 Okta 而不是 Azure AD 作为身份提供者。您应该能够用 AAD 替换相关的 Okta 部分。
  • 你有@alexwlchan 的任何解决方案吗?你能回答你的问题吗?我正在寻找相同的答案。

标签: azure saml adal


【解决方案1】:

否 - ADAL 是 OpenID Connect 并返回 JWT 令牌。

为什么需要使用 SAML?不能使用 OpenID Connect 吗?

【讨论】:

    【解决方案2】:

    Azure AD 不支持 device code flow 的 SAML 令牌。

    来自 Azure AD 团队的MSAL 库支持此应用流。请尝试一下,或者您可以针对protocol 本身编写代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-17
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      • 2019-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多