Azure 身份验证在明显正确的关联后无法在 JMeter 中工作 - 登录 API 问题

问题描述 投票:0回答:1

参考本文之前提出的相同问题:Azure 身份验证在 JMeter 中不起作用

API: https://login.microsoftonline.com/login/{Tenant_ID}/login,在应用所需的关联后未按预期响应进行响应

请求参数:

PPSX:空,

是否支持Fido: 1 ,

ps:2,

他的ScaleUnit:空,

hpgrequestid:${sessionId},

来自 API GET 的值:https://login.microsoftonline.com/{TENANT_ID}/saml2?SAMLRequest=${SAMLToken}&RelayState=${RelayStateToken}&SigAlg=${SigAlgToken}&Signature=${SignatureToken}&sso_reload=真的

i13:0,

登录:${用户名},

类型:11,

登录选项: 3,

flowToken : :${sFT}

来自 API GET 的值:https://login.microsoftonline.com/{TENANT_ID}/saml2?SAMLRequest=${SAMLToken}&RelayState=${RelayStateToken}&SigAlg=${SigAlgToken}&Signature=${SignatureToken}&sso_reload=真的

i19:24803,

psRNGCEntropy:空,

登录:${用户名},

是注册帖子: 0 ,

新用户: 1 ,

金丝雀: ${金丝雀} ,

来自 API GET 的值:https://login.microsoftonline.com/{TENANT_ID}/saml2?SAMLRequest=${SAMLToken}&RelayState=${RelayStateToken}&SigAlg=${SigAlgToken}&Signature=${SignatureToken}&sso_reload=真的

他的区域:空,

ctx:${sCtxToken},

来自 API GET 的值:https://login.microsoftonline.com/{TENANT_ID}/saml2?SAMLRequest=${SAMLToken}&RelayState=${RelayStateToken}&SigAlg=${SigAlgToken}&Signature=${SignatureToken}&sso_reload=真的

psRNGCDefaultType:空,

Cookie 披露: 0,

lrt分区:空,

i21:0,

lrt:空,

psRNGCSLK:空,

passwd:${密码},

找到MSA:空,

fspost:0

回应:

<!DOCTYPE html>
<html>
<head>
    <title>Redirecting</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=2.0, user-scalable=yes">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="-1">
    <meta name="PageID" content="BssoInterrupt" />
    <meta name="SiteID" content="" />
    <meta name="ReqLC" content="1033" />
    <meta name="LocLC" content="en-US" />

预期回应:

上述 API 的 Cookie 应返回参数值: CCStateESTSAUTHESTSAUTHLIGHTESTSAUTHPERSISTENTSignInStateCookiebuid 尚未在 JMeter 中返回

上述 API 的主体应返回参数值:SAMLResponseRelayState,然后这 2 个参数的值将传递到下一个 API:POST:https://${URL}/samlauthn/

内容:

<title>Working...</title> instead of <title>Redirecting</title>

解决步骤: 我尝试通过添加一个帖子 API 请求来应用“上面提到的”相关帖子中建议的修复,该请求作为“urlPost”键下上述登录请求的响应的值,然后传递所有已传递的参数到没有 i19 参数的登录请求 API 作为 urlPost_login_followup 但仍然得到响应

<html>
<head>
<noscript>JavaScript required to sign in</noscript>
<title>Continue</title>
<script type="text/javascript">function OnBack(){}function DoSubmit(){var subt=false;if(!subt){subt=true;document.fmHF.submit();}}</script>
</head>
<body onload="javascript:DoSubmit();">
<form name="fmHF" id="fmHF" action="https://portal.microsoftonline.com?wa=wsignin1.0" method="post" target="_self">
<input type="hidden" name="t" id="t" value="${value}">
</form>
</body>
</html>

因此,我不确定还需要做什么才能绕过以下 API 所需的身份验证:https://{URL}/samlauthn/ 以及所有正在进行的操作。

azure authentication oauth-2.0 jmeter correlation
1个回答
0
投票

如果您收到意外响应,则意味着您没有发送与真实浏览器相同的请求。

  1. 确保 JMeter 配置为像真正的浏览器一样运行
  2. 使用FiddlerWireshark等第三方嗅探工具来捕获来自JMeter和真实浏览器的请求
  3. 使用 JMeter 和真实浏览器执行登录
  4. 比较结果请求。如果您将发送与真实浏览器相同的请求(除了需要关联的动态参数之外),您将得到相同的响应。
  5. 相应修改您的 JMeter 配置。

如果您需要进一步的帮助,您将需要以 .har 文件 的形式共享网络转储,无论是成功还是失败的情况。

您可能会发现如何使用 JMeter 加载测试 SAML SSO 安全网站在一定程度上有用。

© www.soinside.com 2019 - 2024. All rights reserved.