使用 CURL 向 SAML 服务器进行身份验证

Authenticating to SAML server with CURL

我正在尝试对一个使用 SimpleSAML 的网站进行身份验证,而无需浏览器,而只是使用 cURL 命令。

基本上我使用 Chrome 的开发工具来查看重定向以及每个请求发送的信息。

到目前为止,我可以访问 IDP 登录页面 https://idp.mycompany.com/simplesaml/module.php/core/login.php?,提供我的凭据并向 IDP 登录 url 发送 post 请求。
从那里,请求被重定向到 SSO 登录页面 https://login-page.mycompany.com/oam/server/fed/sp/sso,我需要在其中 select 用户角色并且位于不同的地址。在此步骤中使用 curl 命令时,出现 "State Information Lost" 错误。

在 IDP 页面上输入凭据后,我可以在浏览器中的响应 headers 中看到 SimpleSAML 令牌,看起来像 SimpleSAMLAuthToken=_cc877254d02fd4dc408c85482640b8a583b73887f6; path=/; HttpOnly。显然,当使用 cURL 时,从 IDP 登录页面重定向到 SSO 页面时会丢失。

如有任何解决 "State Information Lost" 错误的建议,我们将不胜感激。

解决方案是告诉 curl 使用 -c-b 标志重用 cookie。