代码之家  ›  专栏  ›  技术社区  ›  Flotolk Mark

在jmeter中保持对keyclaft的HTTP请求之间的状态

  •  7
  • Flotolk Mark  · 技术社区  · 7 年前

    因此,我正在尝试自动化一个jmeter脚本,该脚本创建keyscoat用户,然后将其登录。

    首先,它获取登录页面并存储代码,下面是一个示例请求:

    get http://keycault.com:8001//auth/realms/realm/protocol/openid connect/auth?响应类型=code&client&id=client&scope=openid%20profile%20email&nonce=n5b3a2da23c04a&response&mode=form&post&resource=resource&state=2sjwtlvzrswlgkw&redirect&uri=redirecturi
    

    但是,当我得到注册页面时,代码会更改,选项卡ID也会更改。如何防止keychaft在线程中的每个HTTP请求中生成新的代码令牌?

    此外,为什么每个带有JMeter的HTTP请求都像一个新的会话,而不是一系列中的下一个请求?


    编辑:

    除了为线程使用HTTP cookie管理器和HTTP缓存管理器之外,我还使用正则表达式提取器来跟踪代码和执行变量。

    查看我的POST请求时,两个变量与上一个HTTP请求中的变量相同,并且所有cookie都在维护中,但是每次尝试此自动登录时,我都会收到一个400错误,并且keychaft事件日志显示一个无效的代码错误。


    编辑: 根据要求,这里是我所有登录请求的屏幕截图 .

    GET http://Keycloak.com:8001//auth/realms/REALM/protocol/openid-connect/auth?response_type=code&client_id=CLIENT&scope=openid%20profile%20email&nonce=N5b3a2da23c04a&response_mode=form_post&resource=RESOURCE&state=2SJwtlVZrswlGkw&redirect_uri=REDIRECTURI
    

    但是,当我得到注册页面时,代码会更改,选项卡ID也会更改。如何防止keychaft在线程中的每个HTTP请求中生成新的代码令牌?

    此外,为什么每个带有JMeter的HTTP请求都像一个新的会话,而不是一系列中的下一个请求?


    编辑:

    除了对线程使用HTTP cookie管理器和HTTP缓存管理器之外,我还使用正则表达式提取器来跟踪代码和执行变量。

    查看我的post请求,这两个变量与前一个HTTP请求中的变量相同,并且所有cookie都在维护中,但是每次尝试自动登录时,我都会得到一个400错误,并且keyscoat事件日志显示一个无效的代码错误。


    编辑: 根据要求,这里是我所有登录请求的屏幕截图

    3 回复  |  直到 6 年前
        1
  •  4
  •   UBIK LOAD PACK    6 年前

    很可能您的正则表达式提取器没有嵌套在您试图从中提取数据的HTTP请求中。

    如果它的作用域太宽,它将应用于所有HTTP请求,因此当它第一次成功提取时,但是对于不包含令牌的下一个请求,提取器将运行并用空值覆盖旧值。

    请参见jmeter中的作用域规则:

        2
  •  2
  •   Shasak Singh Sengar    7 年前

    你需要保持命中之间的相互关系。请浏览下面的博客

    https://www.blazemeter.com/blog/how-to-handle-correlation-in-jmeter

        3
  •  0
  •   Ori Marko    6 年前

    根据 keycloak 你必须使用 HTTPS 如果您正在使用 keycloak.com

    只要您坚持使用像localhost、127.0.0.1、10.0.x.x、192.168.x.x和172..16.x.x这样的私有IP地址,keyclaft就可以在不使用SSL的情况下运行。如果服务器上没有配置SSL/HTTPS,或者尝试通过非私有IP地址通过HTTP访问keyclaft,则会出现错误。

    因此,您有3个选项:使用私有IP地址、使用反向代理或负载均衡器来处理HTTPS或为keycault服务器启用HTTPS。