首页 > 解决方案 > SSO 重定向后如何通过基本身份验证?

问题描述

我是赛普拉斯和 JS 的新手。如果未登录,我正在测试的应用程序将重定向到存根 IDP 页面。该应用程序也落后于基本身份验证。我在测试中所做的只是

cy.visit("https://username:password@app_url.com")

这会将我重定向到我单击登录按钮的存根 IDP 页面

cy.contains('button', 'Log in').click(). 这将重定向回应用程序主页。

但是,在重定向时,它提示我再次填写基本身份验证。有没有办法传递重定向后记住的基本身份验证标头?

存根 IDP 用于基于 SAML 的 SSO,工作量太大,或者我应该说我缺乏创建服务器请求以获取身份验证令牌的知识。所以现在寻找一个简单的解决方法。

标签: cypress

解决方案


我遇到了同样的问题,我刚刚解决了它cy.intercept()

您必须cy.intercept在新的重定向 URL 上使用并将基本授权标头添加到请求中。

  1. 生成基本的身份验证头,您可以在此处生成它:https ://www.blutter.se/utils/basic-authentication-header-generator/

  2. 找到目标 URL,为您提供应用主页。

  • 也许有几个重定向,你可以在打开模式下运行测试时找到最后一个带有基本身份验证的重定向,取消弹出窗口后,你会在运行器中看到这个

重定向网址

  • “新网址”是您想要的
  1. 在测试中,intercept()在单击按钮之前添加命令。将授权标头添加到传出请求中,该请求在重定向测试时触发。
cy.intercept(`<TARGET_URL>`, (req) => {
  req.headers['Authorization'] = `<BASIC_AUTH_HEADER_VALUE>`;
});

在这里您可以阅读更多关于将标头添加到传出请求和拦截功能的信息: https ://docs.cypress.io/api/commands/intercept#Adding-a-header-to-an-outgoing-request


推荐阅读