【问题标题】:Python SAML Authentication AutomationPython SAML 身份验证自动化
【发布时间】:2021-02-01 22:59:58
【问题描述】:

我正在尝试一个项目,该项目收集我所有的每月公用事业金额并将欠我室友的金额分摊。我已经设法以编程方式登录到两个网站,但我在最后一个网站上遇到了问题,因为它们使用的是 SAML (https://www.blackhillsenergy.com/)。我已经使用 Chrome 的开发者工具检查了网络请求,但没有取得任何突破。我尝试使用 requests_ecp 但我也没有任何运气。我了解了 SAML,但很难理解它们的实现以及如何在我的脚本中使用它。下面是我的示例代码?有什么想法吗?

def get_bh_bill():

    url = 'https://www.blackhillsenergy.com/cpm/v1/user/accounts?username={fill here}'
    bh_login = ''
    bh_pass = ‘'

    # Start a session so we can have persistent cookies
    session = requests.session()

    session.auth = HTTPECPAuth('https://sso.blackhillsenergy.com', username=bh_login, password=bh_pass)
    acc_res = session.get(url)
    acc_soup = BeautifulSoup(acc_res.text, "html.parser")


    print(acc_soup.prettify())

    return '0000'

【问题讨论】:

    标签: python saml


    【解决方案1】:

    SAML 通常是这样工作的。

    您访问了所需的站点,他们发现您未通过身份验证,因此他们创建了一个 SAML 请求,通过您的浏览器将其路由,并将您发送到 IdP,即身份提供者。

    IdP 读取 SAML 请求,然后要求您提供凭据。一旦通过身份验证,它会创建一个 SAML 响应,并通过您的浏览器将其路由回原始站点。

    路由是通过呈现一个包含 SAML 请求/响应的简单 HTML 表单以及用于提交它的少量 javascript 来完成的。这就是它跨域移动信息的方式(SAML 通常跨域完成,这就是它不使用 cookie 的原因。)

    您的脚本需要做的基本上是遵循工作流程,自动提交表单,在被询问时登录,然后再提交表单。这是一个多步骤的工作流程。很可能还涉及大量重定向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多