loadrunner Web_类函数之web_service_set_security()

来源:互联网 发布:深圳网络指尖公司 编辑:程序博客网 时间:2024/06/07 00:40

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:用于签署安全令牌请求的先前定义的令牌的L​​ogicalName。无法对BaseToken进行参数化。

IssuerToken(可选):以前定义的令牌的逻辑名,加密发件人的熵值。无法对IssuerToken进行参数化。

AddAppliesTo(可选):布尔值。如果为true,则指定令牌将与之通信的Web服务URL。

EndPointUri(可选):发出令牌的服务器。如果未指定,则使用Web服务主机。

Type = Derived

DeriveFrom:之前定义的令牌的逻辑名,从中导出此令牌(.NETDerivedKeyToken)。 DeriveFrom无法参数化。

MESSAGE_SIGNATURE

消息签名参数具有以下属性:

UseToken:用于签名的先前定义的令牌的L​​ogicalName。 UseToken无法参数化。

要签名的部分(可选)。如果未指定,则Body元素的全部内容和安全头的Timestamp元素都将被签名。要限制已签署的部分,请指定以下选项之一:

    TargetToken:先前定义的要签名的令牌的L​​ogicalName。无法对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_requestweb_service_call时,不再添加上一次调用web_service_set_security中指定的令牌。

web_service_set_security_saml()

使用SAML将安全性令牌添加到后续的soapWeb服务调用。

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_requestweb_service_call调用中附加的令牌。令牌保持有效,直到下一次web_service_set_security_samlweb_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_requestweb_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_eventsecond_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)

);