未来已来

web_set_user 使用

上一篇 / 下一篇  2008-12-13 21:28:00 / 个人分类:性能测试

性能测试过程中Web_Set_User的使用


今天带着学员做测试过程中(网站是学员独立动手搭建),在访问某个页面时,系统会弹出一个对话框要求用户输入域用户名称和口令,输入正确的与用户名称和口令才能继续。用LR录制脚本回放不能成功,造成这个原因是由于IIS的设置问题,IIS具有身份验证功能,提供了几种验证方式:

1、 匿名访问
这种方式不验证访问用户的身份,客户端不需要提供任何身份验证的凭据,服务端把这样的访问作为匿名的访问,并把这样的访问用户都映射到一个服务端的账户,一般为IUSER_MACHINE这个用户,可以修改映射到的用户:

2、 集成windows身份验证
这种验证方式里面也分为两种情况
    A.NTLM验证: 这种验证方式需要把用户的用户名和密码传送到服务端,服务端验证用户名和密码是否和服务器的此用户的密码一致。用户名用明码传送,但是密码经过处理后派生出一个8字节的key加密质询码后传送。
    B.Kerberos验证:这种验证方式只把客户端访问IIS的验证票发送到IIS服务器,IIS收到这个票据就能确定客户端的身份,不需要传送用户的密码。需要kerberos验证的用户一定是域用户。
      每一个登录用户在登录被验证后都会被域中的验证服务器生成一个票据授权票(TGT)作为这个用户访问其他服务所要验证票的凭证(这是为了实现一次登录就能访问域中所有需要验证的资源的所谓单点登录SSO功能),而访问IIS服务器的验证票是通过此用户的票据授权票(TGT)向IIS获取的。之后此客户访问此IIS都使用这个验证票。同样访问其他需要验证的服务也是凭这个TGT获取该服务的验证票。

 

解决问题的方法:解决方法是"启用匿名访问",有两种解决方法
1,删掉网站。重新再添加。到匿名访问那步,不要把它的勾去掉
2.IIS里右键点你网站目录"属性"---"目录安全性"---"编辑"----"启用匿名访问"打勾
 弄完如果不要用户密码,但又提示你没有权根 请看下面操作
 IIS里右键点你网站目录"属性"---"主目录"--"配置"---"选项"--“启用父路径"打勾 确定
 接下来最好再做一步
 IIS里右键点你网站目录“权根",这里先确保你有iis来宾用户,没有的话请点"添加"--"高级"--“立即查找"--按三下I键就是这个用户了-确定就行了
 接下来同步权根,让你网站目录里每个文件和文件夹都有和网站根目录一样的权根
 IIS里右键点你网站目录“权根"--点"高级"---把下面两个勾都打上--确定--等它同步完

 

在使用LR的时候,回放服务器报401 Access Denied错误,
WEB服务器不允许匿名访问,而我们又没有提供正确的用户名/密码时,服务器就会给出这个返回代码。在IIS中,设置IIS的安全属性为不允许匿名访问,此时直接访问的话就会得到以下返回结果:

HTTP/1.1 401 Access Denied
Server: Microsoft-IIS/5.1
Date: Mon, 06 Mar 2006 09:15:55 GMT
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
Connection: close
Content-Length: 3964
Content-Type: text/html
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html dir=ltr>
……
此时跳出对话框,让我们输入用户名和密码,当我们在输入了用户名和密码以后,服务器与客户端会再进行两次对话。首先客户端向服务器索取一个公钥,服务器端会返回一个公钥,二者都用BASE64编码,相应的消息如下(编码部分已经做了处理):
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: 192.168.0.55:8080
Connection: Keep-Alive
Authorization: Negotiate ABCDEFG……
 
HTTP/1.1 401 Access Denied
Server: Microsoft-IIS/5.1
Date: Mon, 06 Mar 2006 09:20:53 GMT
WWW-Authenticate: Negotiate HIJKLMN……
Content-Length: 3715
Content-Type: text/html
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html dir=ltr>
……
客户端拿到公钥之后使用公钥对用户名和密码进行加密码,然后把加密以后的结果重新发给服务器:
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: 192.168.0.55:8080
Connection: Keep-Alive
Authorization: Negotiate OPQRST……
这样,如果验证通过,服务器端就会把请求的内容发送过来了,也就是说禁止匿名访问的网站会经过三次请求才可以看到页面。但因为客户端浏览器已经缓存了公钥,用同一个浏览器窗口再次请求这个网站上的其它页面时就可以直接发送验证信息,从而一次交互就可以完成了。

脚本代码如下:


#include "web_api.h"


Action()
{
  int i=0;
  int iLink_Counts=0;
  int iRnd_link=0;
  char buffer[20]="";
  char url[20]=""; 

  web_set_user("192.168.1.111\\administrator", "123456", "192.168.1.111:80");

  web_reg_save_param("Save_Links",
                      "LB=<a href=\"",
       "RB=\"",
                      "ORD=All",
                      LAST); 

 web_url("192.168.1.84",
  "URL=http://192.168.1.111/",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t3.inf",
  "Mode=HTML",
  LAST);
  

    //获得参数文件数组大小
    lr_output_message("数组大小:%d",atoi(lr_eval_string("{Save_Links_count}")));
    iLink_Counts=atoi(lr_eval_string("{Save_Links_count}"));

    for(i=1;i<=iLink_Counts;i=i+1)
    {
        sprintf(buffer,"{Save_Links_%d}",i);
        lr_output_message("%s",lr_eval_string(buffer)) ;  
     }   

   srand(time(NULL));

   iRnd_link=rand() % iLink_Counts +1;

   sprintf(buffer,"{Save_Links_%d}",iRnd_link);

  // url="URL="+ lr_eval_string(buffer"); 

   strcpy(url,"URL=");
   strcat(url,lr_eval_string(buffer));


   web_url(lr_eval_string(buffer),
  url,
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t3.inf",
  "Mode=HTML",
  LAST);

 return 0;
}


TAG: 性能测试

 

评分:0

我来说两句

Open Toolbar