azure - 我可以使用 Azure Active Directory 库 (ADAL) 从 Azure AD 获取 SAML 响应吗?
问题描述
我想写一个脚本:
- 使用设备代码机制将用户登录到 Azure AD
- 构造SAML SSO 请求 URL
- 使用步骤 1 中的身份验证发出 SAML 请求
- 获取 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 响应,使用假设_role_with_saml创建凭证,然后将它们写入~/.aws/credentials
. 我认为这意味着我必须直接访问 SAML 响应——浏览器只是将我放在重定向链的末尾。
有任何想法吗?
其他想法
我知道aws-azure-login npm 包通过启动无头浏览器来做到这一点——但它没有维护,我发现它有点不稳定。
现在我有一个 Python 脚本,它在 Chrome(我登录的地方)中打开 SAML 请求,然后使用browsercookie 库来搜索 Chrome 的 cookie jar 并将其用于其 HTTP 请求。这行得通,但是以这种方式复制 cookie 感觉很奇怪。此外,如果我通过 ssh 连接到远程服务器,它也不起作用。
我在一年半前找到了一个答案,上面写着“ADAL.JS 不支持 SAML2 令牌”。想知道这是否可能已经改变,还是我仍然被困住?
解决方案
否 - ADAL 是 OpenID Connect 并返回 JWT 令牌。
为什么需要使用 SAML?不能使用 OpenID Connect 吗?
推荐阅读
- maven - 使用特定文件中的 maven 命令从功能文件运行多个场景 - cucumber
- node.js - 我的节点服务器在网站的桌面视图上工作,但不是在移动设备上工作。节点 AWS EC2 Express
- qt - gstreamer-视频上的透明QWidget覆盖
- javascript - 拖放发布多个文件
- c# - 根据所选国家/地区填充状态下拉列表
- python - 为什么这个 DeepSpeech python 程序的结果与我从命令行界面得到的结果不同?
- c# - 有限缩放 Azure 函数
- java - Mockito 显示 0 次与 mock 的交互
- html - 在烧瓶上发送一个绘图图
- python-3.x - 从数组中随机选择