web_service_set_security()
将安全性令牌添加到后续的soap和Web服务调用。(添加安全验证机制)
intweb_service_set_security([const char * TtlIsSeconds,] SECURITY_TOKEN,const char * attributes,[SECURITY_TOKEN,attributes ...,SECURITY_TOKEN,attributes,] MESSAGE_SIGNATURE,const char * attributes,[MESSAGE_SIGNATURE,attributes,...,MESSAGE_SIGNATURE,attributes, ] ENCRYPTED_DATA,constchar * attributes,[ENCRYPTED_DATA,attributes,... ENCRYPTED_DATA,attributes,] LAST);
参数说明:
TtlIsSeconds:消息从创建时间开始的有效时间段(以秒为单位)。
SECURITY_TOKEN:每个以SECURITY_TOKEN标记开头的段都指定一个令牌。有关属性的详细信息,请参见下文。
MESSAGE_SIGNATURE:以MESSAGE_SIGNATURE标记开头的每个部分指定将使用指定的标记对后续Web服务请求进行签名。签名可以应用于整个消息,指定的令牌或SOAP信封的指定部分。有关属性的详细信息,请参见下文。
ENCRYPTED_DATA:以ENCRYPTED_DATA标记开头的每个部分指定后续Web服务请求将使用指定的标记进行加密。加密可以应用于整个消息,指定的令牌或SOAP信封的指定部分。有关属性的详细信息,请参见下文。
LAST:指示参数列表结束的标记。
web_service_set_security函数指定要在每个后续soap_request和web_service_call调用时附加的令牌。令牌保持有效,直到下一个web_service_set_security或web_service_cancel_security调用。
在每个web_service_call,在附件之前处理安全令牌。
SECURITY_TOKEN
安全令牌规范需要属性。所需的数据取决于令牌的类型。所有令牌都具有以下属性:
Type:令牌的类型。无法对令牌类型进行参数化。
LogicalName:令牌的逻辑名称。无法对LogicalName进行参数化。
Add(Optional):一个布尔值,指示是否将此令牌添加到请求。默认值为True。
不同类型具有其他属性,如下所述:
Type=Username
UserName:与安全令牌相关联的用户名。
Password:与安全令牌相关联的用户名的密码。
PasswordOptions(Optional):指定如何在SOAP消息中发送密码的值。可能的值为SendPlainText,SendNone和SendHashed。
Type = X509
StoreName:证书存储的名称。有关可能值的最新列表,请参阅Microsoft.NET Framework类库StoreName Enumeration文档。
IDType:必须指定以下之一来标识证书:
Base64KeyID:转换为base64的证书的唯一标识符。
Base64Hash:证书的哈希值转换为base64。
CertName:证书名称值。
IDValue:证书标识符的值。
StoreLocation(可选):商店位置。可能的值为CurrentUser和LocalMachine。
Type = Kerberos,Kerberos2
Optional:托管Web服务的计算机的名称。
Domain:Web服务主机是其成员的域。
Type = SecurityContext
BaseToken:用于签署安全令牌请求的先前定义的令牌的LogicalName。无法对BaseToken进行参数化。
IssuerToken(可选):以前定义的令牌的逻辑名,加密发件人的熵值。无法对IssuerToken进行参数化。
AddAppliesTo(可选):布尔值。如果为true,则指定令牌将与之通信的Web服务URL。
EndPointUri(可选):发出令牌的服务器。如果未指定,则使用Web服务主机。
Type = Derived
DeriveFrom:之前定义的令牌的逻辑名,从中导出此令牌(.NETDerivedKeyToken)。 DeriveFrom无法参数化。
MESSAGE_SIGNATURE
消息签名参数具有以下属性:
UseToken:用于签名的先前定义的令牌的LogicalName。 UseToken无法参数化。
要签名的部分(可选)。如果未指定,则Body元素的全部内容和安全头的Timestamp元素都将被签名。要限制已签署的部分,请指定以下选项之一:
TargetToken:先前定义的要签名的令牌的LogicalName。无法对TargetToken进行参数化。
TargetPath:要签名的soap包络的部分。
ENCRYPTED_DATA
加密的数据参数具有以下属性:
UseToken:用于加密的先前定义的令牌的LogicalName。 UseToken无法参数化。
加密部分(可选)。 如果未指定,则Body元素的整个内容和SOAP头都不加密。 要限制已加密的部分,请指定以下选项之一:
TargetToken:之前定义的要加密的令牌的LogicalName。 无法对TargetToken进行参数化。
TargetPath:要加密的soap信封的哪个部分。
示例:web_service_set_security和web_service_cancel_security
在本示例中调用web_service_set_security之后,每个soap_request和web_service_call直到下一个web_service_set_security或web_service_cancel_security调用都将发送三个令牌:一个Username令牌,一个Derived令牌和一个二进制X509令牌。
对应于XPath语句:= // soap:Body / View的所有标签都将使用用户名令牌签名。
肥皂信封的正文将使用X509令牌加密。
用户名令牌将使用X509令牌加密。
调用web_service_cancel_security后,不再发送令牌。
web_service_set_security(
SECURITY_TOKEN,“TokenName = MyUserNameToken”,“Type = Username”,
“UserName = admin”,“Password = test”,
“PasswordOptions = SendPlainText”,
SECURITY_TOKEN,“Name = MyDerivedToken”,“Type = Derived”,
“DeriveFrom = MyUserNameToken”,
SECURITY_TOKEN,“Name = MyX509Token”,“Type = X509”,
“StoreLocation = CurrentUser”,“CertStore = TrustedPeople”,
Base64KeyID= bBwPfItvKp3b6TNDq + 14qs58VJQ =“,
MESSAGE_SIGNATURE,“UseToken = MyUserNameToken”
“TargetPath = // soap:Body / View”
ENCRYPTED_DATA,“UseToken = MyX509Token”,
ENCRYPTED_DATA,“UseToken = MyX509Token”,
“TargetToken = MyUserNameToken”,
LAST);
... ..
web_service_cancel_security();
web_service_cancel_security()
取消上次调用web_service_set_security的设置。
int web_service_cancel_security();
在调用web_service_cancel_security后,在调用soap_request和web_service_call时,不再添加上一次调用web_service_set_security中指定的令牌。
web_service_set_security_saml()
使用SAML将安全性令牌添加到后续的soap和Web服务调用。
int web_service_set_security_saml [const char * IssuerURL,] [const char * Username,const char * Password,] [const char * PasswordOptions,] [const char * CertStoreLocation,] [const char * CertStoreName,] [const char * CertSubjectName, [const char * PolicyFile,] LAST);
参数说明:
IssuerURL :STS端点URL。
Username:用户名要发送到STS的用户名。
Password :密码STS密码。
PasswordOptions:指定如何在SOAP消息中发送密码的值。可能的值为SendPlainText,SendNone和SendHashed。
CertStoreLocation:一个值,指定X.509证书存储的位置。可能的值为CurrentUser和LocalMachine。
CertStoreName:证书存储的名称。有关可能值的最新列表,请参阅Microsoft .NET Framework类库StoreName枚举文档。
CertSubjectName:证书主题名称。
PolicyFile:配置RST和WebService的安全性的策略文件。测试脚本使用策略issuerPolicy和servicePolicy。如果未指定策略文件,则使用DAT目录中的默认策略文件。
LAST:指示参数列表结束的标记。
web_service_set_security_saml函数使用安全断言标记语言(SAML)获取在每个后续soap_request和web_service_call调用中附加的令牌。令牌保持有效,直到下一次web_service_set_security_saml或web_service_cancel_security_saml调用。
所有参数都是可选的。但是,必须指定“IssuerUrl”。
可以在策略文件中提供证书设置,而不是脚本。
在每个web_service_call,在附件之前处理安全令牌。
web_service_cancel_security_saml()
从上次调用web_service_set_security_saml中取消设置。
int web_service_cancel_security_saml();
在调用web_service_cancel_security_saml之后,在调用soap_request和web_service_call时,不再添加先前调用web_service_set_security_saml中指定的令牌。
web_service_wait_for_event()
等待对先前异步服务请求的响应。
此函数返回捕获的事件的名称。如果指定了“Quantifier= ALL”并捕获了多个事件,则返回任何一个事件名称。如果调用超时,则返回null。
char * web_service_wait_for_event(const char * StepName,const char * Quantifier,const char * Timeout,BEGIN_EVENTS,const char * EventName_1,[... EventName_n,] END_EVENTS,LAST);
参数说明:
StepName:在测试树中显示的步骤的名称。可以使用任何文本。
Quantifier :量词为ALL或ANY。指示是等待所有指定的事件返回还是等待第一个返回。
Timeout :超时以毫秒为单位。
BEGIN_EVENTS:指示事件列表开始的标记。
EventName:要等待的事件的列表。
END_EVENTS:指示事件列表结束的标记。
LAST:指示参数列表结束的标记。
调用web_service_wait_for_event后,测试运行暂停,直到接收到指定的一个或所有事件。
事件必须在以前调用web_service_call时创建。
请注意,您必须增加每个主机和每个vuser的并发连接总数,才能使用异步请求。
例如:
web_set_sockets_option(“MAX_CONNECTIONS_PER_HOST”,“10”);
web_set_sockets_option(“MAX_TOTAL_CONNECTIONS”,“10”);
示例:web_service_wait_for_event
此示例显示两个异步服务请求,指定事件first_event和second_event,以及调用捕获事件的web_service_wait_for_event。
web_service_call(“StepName= EchoString_101”,
“SOAPMethod=
ExtendedECHO_rpc_encoded | ExtendedECHO_rpc_encodedSoap | EchoString“,
“ResponseParam= response”,
“Service= ExtendedECHO_rpc_encoded”,
“AsyncEvent= first_event”,
BEGIN_ARGUMENTS,
“sec =7”,
“strString= jabberwocky”,
END_ARGUMENTS,
BEGIN_RESULT,
“EchoStringResult= first_call”,
END_RESULT,
LAST);
web_service_call(“StepName= EchoString_102”,
“SOAPMethod=
ExtendedECHO_rpc_encoded | ExtendedECHO_rpc_encodedSoap | EchoString“,
“ResponseParam= response”,
“Service= ExtendedECHO_rpc_encoded”,
“AsyncEvent= second_event”,
BEGIN_ARGUMENTS,
“sec =2”,
“strString= borogoves”,
END_ARGUMENTS,
BEGIN_RESULT,
“EchoStringResult= second_call”,
END_RESULT,
LAST);
lr_output_message(“gotevent%s”,
web_service_wait_for_event(“StepName = WaitHere”,
“Quantifier = ALL”,
“Timeout = 10000”,
BEGIN_EVENTS,
“first_event”,
“second_event”,
END_EVENTS,
LAST)
);