如何使用jmeter测试CAS?

7
  • request:

    I send a "get" http request, has no parameters;
    path: http://192.168.22.139:8080/KSP

  • response:

    <input id="username" type="text" name="username" required/>
    <input id="password" type="password" name="password" required/>
    <input type="hidden" name="lt" value="LT-697-vbNmm6NKOZ0cd7Wg1ywzbMKLa0DnOc" />
    <input type="hidden" name="execution" value="e1s1" />
    <input type="hidden" name="_eventId" value="submit" />
    
我添加了两个XPath Extractor来获取ltexecution
  • 引用名称:lt
    xPath查询://*[@id="login"]/input[3]
  • 引用名称:execution
    xPath查询://*[@id="login"]/input[4]
然后我发送了另一个请求,包含username/password/service/It/execution/_eventId错误:我得到的ticket和execution为空,我是通过Chrome获取xpath的,那么问题出在哪里呢?

“CSS/JQuery Extractor” 也可以获取 “lt”。 “input[name=lt]” - Olivia Wang
"CSS/JQuery Extractor" 也可以获取 "lt"。 "input[name=lt]" - Elton Wang
4个回答

5
从第一个响应中,可以使用正则表达式提取器来提取票务和lt。 提取票务 然后使用以下参数发送第二个请求:

用户名/密码/It/execution/_eventId/_eventId 输入图像描述

另外,您应该添加HTTP Cookie管理器输入图像描述

3

我没有看到你第一个请求的参数,至少我没有看到lt参数。

第二个请求应该是一个GET请求,参数包括:service和ticket(这不是jsessionid,它的值由CAS生成,并且与第一个请求中的lt参数相同,用于CAS登录)。


我已经重新编辑了我的问题;在我的第一个请求中,我如何获得“它”?从响应1中,我得到了票。在第一个请求中,我需要发送什么参数?第二个请求呢? - Olivia Wang
1
@OliviaWang,当您打开CAS登录页面时,应该会有一个名称为“lt”的隐藏输入框,您可以使用正则表达式提取器获取它。 - Bugdaily
1
也许你可以尝试使用正则表达式提取器和正则表达式:lt=(.+) - Bugdaily
我已经为你的回答点赞了,但是关于“XPath Extractor”的问题仍然存在,所以很抱歉... - Olivia Wang
现在你能用JMeter登录吗? - Bugdaily
显示剩余2条评论

3

在第二个请求中,您需要进行以下几点更改:

  • 添加execution参数(从第一个请求中提取,例如使用XPath ExtractorRegular Expression Extractor),

    • XPath表达式应类似于.//*[@id='fm1']//*[@name='execution']/@value
  • 添加_eventId=submit参数,

  • lt参数(登录门票)也应从登录表单中提取-它每次都会更改;请参见XPath ExtractorRegular Expression Extractor

    • XPath表达式:.//*[@id='fm1']//*[@name='lt']/@value
  • 非必需,但会更美观-将GET更改为POST。

您的建议是正确的,我已经重新编辑了我的问题。现在的问题是我无法获取“lt”和“execution”,请帮助我。 - Olivia Wang
仍然无法获得“lt”和“execution”,我改用“正则表达式提取器”,现在它能够正常工作了。还是非常感谢大家的帮助。 - Olivia Wang

2
如果您正在测试CAS登录本身,我建议使用JMeter HTTP代理服务器来记录登录过程,捕获所有传递的值,检测那些是动态的,并通过正则表达式提取器、XPath、Beanshell等进行处理。后处理器-选择您最熟悉的工具。
如果您的应用程序在CAS后面,我猜CAS登录只是添加了一个cookie,您的应用程序根据该cookie来认证用户。在这种情况下,您可以将cookie存储在CSV文件中,并使用HTTP Cookie Manager来模拟经过身份验证的用户。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接