【问题标题】:JMeter Issue with SSO and CookiesSSO 和 Cookie 的 JMeter 问题
【发布时间】:2017-02-22 19:41:45
【问题描述】:

使用 JMeter 3.1 r1770033,我在通过单点登录存储公司特定 cookie 时遇到了两个问题。 (单点登录)

我在这个网站上阅读了许多关于 cookie 的博客文章和问题,但似乎没有一个能够解决我的具体问题“HC3CookieHandler:不存储无效 cookie:

我相信这是由于公司希望 cookie 格式化的实施方式。

Cookie:companyAuthorizedEnvironment=assignedTokenId

我可以通过 curl 成功使用命令行界面,但不能通过 JMeter。

 curl --request POST --header "X-OpenAM-Username:username" --header "X-OpenAM-Password:password” --header "Content-Type:application/json" --data "{}" https://sso.company.com/access/authenticate/

Response

{"tokenId": "AQIC5w_TEXT_REMOVED_NTcy*", "successUrl": "/openam/console" }

下面是我的简单登录/注销测试的大纲,其中包含说明和2 个由此产生的问题的摘要。

非常感谢任何帮助!



测试计划

HTTP 缓存管理器

Clear cache each iteration? = enabled
Use Cache-Control = disabled
Max # of elements = 5000

HTTP Cookie 管理器

我已经尝试了所有可能的实施/政策组合,但没有成功。

Clear cookies each iteration = enabled
Implementation = HC3CookieHandler
Cookie Policy = default

设置线程组 = SSO 身份验证

“此过​​程允许远程客户端使用有效凭据向 SSO 进行身份验证。身份验证成功后,将向用户提供一个身份验证令牌,然后用于访问受保护的应用程序。”

HTTP Header Mgr

    X-OpenAM-Username: ${username}
    X-OpenAM-Password: ${password}
    Content-Type: application/json

HTTP Request

    Server Name = sso.stage.company.com
    Protocol = ${__P(protocol,https)}
    Method = POST
    Path = /access/authenticate/

    REGEX

        Ref Name = newTokenId
        Reg Expression = "tokenId":(.+?)\,
        Template = $1$
        Match No. = 1
        Default = null

    BEANSHELL ASSERTION

        ${__setProperty(tokenId,${newTokenId})}

拆除线程组 = SSO 注销

“此过​​程允许远程客户端通过注销系统来终止与 SSO 的活动会话”

HTTP Header Mgr

    Cookie: companyauthstage=${tokenId}
    Content-Type: application/json

HTTP Request

    Server Name = sso.stage.company.com
    Protocol = ${__P(protocol,https)}
    Method = POST
    Path = /access/logout/


问题 1 - 登录

我在跟踪日志中看到以下警告。

WARN  - jmeter.protocol.http.control.HC3CookieHandler: Not storing invalid cookie: <amlbcookie=01; Domain=sso.stage.company.com.; Path=/> for URL https://sso.stage.company.com/access/authenticate/ (Illegal domain attribute "sso.stage.company.com.". Domain of origin: "sso.stage.company.com") 

不知道为什么它是非法的。我想知道是否在某个地方将句点 (.) 附加到域中。我已经确认我在任何地方都没有额外的时间。

问题 2 - 注销

Response code: 401
Response message: Unauthorized

我怀疑它是未经授权的,因为“Cookie: companyauthstage=${tokenId}”标头没有被存储,但不是 100% 确定。

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    如果您完全确定 cookie 没有问题,您可以强制 JMeter 禁用 cookie 检查并通过将下一行添加到 user.properties 文件(通常位于“bin " JMeter 安装文件夹)

    CookieManager.check.cookies=false
    

    需要重新启动 JMeter 才能获取该属性。

    你可以通过 -J 命令行参数传递属性来达到同样的效果:

    jmeter -JCookieManager.check.cookies=false -n -t ....
    

    参考资料:

    【讨论】:

      【解决方案2】:

      你已经得到了你需要的描述:

      Illegal domain attribute "sso.stage.company.com.". Domain of origin: "sso.stage.company.com"
      

      它是“非法的”,因为它的末尾有一个点,因此它与它来自的域不匹配。这属于安全范围,所以所有客户端软件都应该非常重视它,cookie管理器也是如此。

      所以你最好去提醒你的开发者 - 这是一个错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-19
        • 1970-01-01
        • 2021-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多