【发布时间】: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