Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from space FUNCTDEV and version SOAVIRT_9.10.6_CTP_3.1.2

...

设置基本 HTTP 连接选项之前,需要知道要为其创建代理的服务器的主机、端口和路径。这些设置,通常直接用来于向服务发送消息。 

连接设置

若要指定基本 HTTP 连接选项,请在代理设置连接选项卡设置以下服务和监听细节:

代理设置(传入) 

这些设置指定来自客户端的哪些消息应该连接到 Virtualize,以便与测试中的应用程序通信。 

...

Listener

可以从下拉菜单中选择在创建代理时定义的 HTTP 监听器(请查阅 Creating Proxies),或者使用默认的监听器。

可以在下面部分添加 HTTP 监听器

  1. 单击 New 并为监听器指定名称。
  2. 单击 Add Port 并输入端口号。 
  3. 在客户端通过 SSL 发送通讯报文时,启用 Secure 选项并启用验证选项。有关更多详情,请查阅 HTTP 配置SSL Settings for Listener Ports 。
  4. 单击 OK ,退出端口编辑器。
  5. 单击 Add ,添加监听器的其他端口,或再次单击 OK ,完成添加监听器。
Proxy listen path

输入代理应该监听传入连接的路径。

任何两个消息代理都不能存在这样的 HTTP 连接,它具有相同代理路径或与现有虚拟资产的 HTTP 路径匹配的路径。

有关更多详情,请查阅 HTTP 配置 Service Forward Path and Proxy Listen Path

Proxy URL显示应该给 AUT 的 URL;有关更多详情,请查阅 将 AUT 指向代理 Directing AUTs to Proxies

监听器端口的 SSL 设置

启用 Use keystore 选项,配置服务端 SSL 设置。

...

Key store file指定到密匙库文件的路径。可以手动输入路径,也可以浏览文件系统或工作区。
Key store password指定访问密匙库的密码。
Key store type

从下拉菜单中选择密匙库类型,然后单击 Load

主连接(输出)

Service URL包含目标应用程序的整个路径(包括服务主机、服务端口和转发路径)。可以在此处输入完整 URL,和/或在下面字段中指定组件:在一个区域进行更新将传播给另一个(如,如果在 URL 中更改端口,则服务端字段的值将自动更新)。 
Service host

输入服务所在机器的主机名。这是代理将向其发送消息的机器。

如果希望代理在不使用 HTTP 连接的情况下,将消息转发到本地 Virtualize 服务器上的虚拟资产,请输入 localhost127.0.0.1 ,代替实际的主机名。 

Service port输入服务器正在监听的端口。这是代理将向其发送消息的端口。
Service forward path

(可选项)输入代理应该向其转发接收到的消息的路径。如果为空,则默认为 Proxy listen path 字段中的值。

如果 HTTP 代理正在向本地服务器发送消息,则必须输入 Service forward 路径,因为代理不允许转发给自己。 

如果 Service forward path 发送重定向,代理将遵循重定向,并做出响应。它不会将重定向传递回客户端。

有关更多详情,请查阅 HTTP 配置 Service Forward Path and Proxy Listen Path

二次连接(输出)

如果希望在主连接失败或响应程序不可用时,将通讯报文重定向到第二代理端点,请启用 Use secondary connection if primary fails 选项。如果响应状态码为 400 或更高,则连接将视为“失败”。

...

如果启用了该选项,则可以从可用的录制选项中(如下所述)进行选择。

录制选项

这些设置确定在指定辅助端点时如何记录通讯报文。

  • Record on both connections记录主从连接的通讯报文。将不会记录来自主连接的错误信息;相反地,消息将被发送到次要服务器,并记录响应。将记录次要服务器报告的错误。
  • Record on primary connection only记录主连接的通讯报文。不会记录错误。
  • Record on secondary connection only记录二次连接的通讯报文,包括错误。

安全选项设置

只有当正在虚拟化的服务使用 SSL 时,才需要完善服务 SSL 部分。

...

有关及时完善这些字段下面的服务 SSL 字段的更多详情,请查阅 HTTP 配置 Security Configuration

代理服务器选项设置

该选项允许在 Virtualize 消息代理级别指定代理服务器,这样就可以控制要哪个代理服务器来处理正在测试的应用程序和指定的 Virtualize 消息代理之间的通讯报文。它允许配置不同的代理服务器,用于不同 Virtualize 消息代理之间的通信。 

若要在该级别上指定代理设置,请在代理的代理服务器(Proxy Server)选项卡中提供合适的详细信息。 



不支持 SSL。 

Anchor
Service Forward Path and Proxy Listen Path
Service Forward Path and Proxy Listen Path
服务转发路径和代理监听路径

在最简单的情况下,可以将 Proxy listen path 设置为您的服务路径,并保留 Service forward path 为空。使用该配置,代理将它在该路径接收到的所有消息自动转发到 Service hostService port上相同的路径。 

...

如果 Proxy listen pathService forward path 不同,则将会把 Proxy listen path 之后请求中的任何片段附加到转发的请求中。 Proxy listen path 本质上是被 Service forward path 替换的,以便将整个路径(由代理接收)发送到服务。

在 Paths 中使用通配符

可以使用通配符来指定动态的路径段。例如,假定发送了两个请求到 paths /path/1/service/path/2/service上的 Virtualize。若要两个请求跳转至同一个代理,请配置路径为 /path/*/service。 

...

request path: /Path/1/service/bank/account
forward path: /asset/path/bank/service/1/account

数据头修改

大多数情况下,代理将把所有数据头直接传递给目标服务和从目标服务传递给目标服务。可以更改一些与数据头相关的 content-length,以适应代理服务器的工作方式。例如,代理服务器不支持具有“chunked”转换编码的详情,并且将代替“host”数据头发送,以匹配它自己的主机名(然后,它支持接收 chunked 请求和来自目标服务的 chunked 响应。

指向虚拟资产或实际服务

代理可以使用 Virtualize 服务器上的虚拟资产作为其目标服务。为此:

  1. 将服务主机和端口设置为虚拟资产部署的 Vrtualize 服务器的主机和端口。如果希望代理在不使用 HTTP 连接的情况下,将消息转发到本地 Virtualize 服务器上的虚拟资产,请输入 localhost127.0.0.1 ,代替实际的主机名。
  2. 将代理连接的 Service forward path 设置为虚拟资产的路径(在虚拟资产的 Transports> HTTP 选项卡中 HTTP endpoint下可找到)。

Chunking/Unchunking 行为

代理支持接收 chunked 请求和来自目标服务的 chunked 响应。如果服务响应使用 HTTP chunking,代理将在其返回原始调用者/AUT 之前 unchunk 响应。

其他 HTTP 消息代理配置

可以创建属性文件,配置其他 HTTP 监听器设置。属性文件允许微调 HTTP 监听器性能并指定其他 SSL 设置。

  1. 创建纯文本并指定要设置的属性(请查阅 HTTP 配置Listener Message Proxy Performance Properties 和 HTTP 配置Listener Message Proxy SSL Properties)。 
  2. 将文件保存到工作区中 VirtualAssets 目录中,并命名其为 embeddedServer.properties

每次启用具有 HTTP 监听器的代理时都将读取该文件。

HTTP 监听器消息代理属性

Scroll Table Layout
widths40%,60%

embedded.connector.maxHttpHeaderSize指定请求和响应 HTTP 数据头的最大大小(以字节为单位)。如果未指定,则将该属性设置为 8192 (8 KB)。

HTTP 监听器消息代理性能属性

所有属性都是可选的,非整数型值将被忽略。

Scroll Table Layout
widths40%,60%

embedded.connector.maxThreads

指定连接器应该创建请求处理线程的最大数。该属性确定可同时处理地最大请求数。默认为 200

embedded.connector.minThreads

指定应该始终运行的最小线程数。默认为 10

embedded.connector.acceptors

指定应该用于接受连接的线程数。在拥有多个 CPU 的机器上增加该值,或者当使用多个 non-keep-alive 连接时。大多数情况下,12 已经足够。默认为 1

embedded.connector.idleTimeout指定关闭连接之前应该等待另一个 HTTP 请求连接器的时间(以毫秒为单位)。指定为 -1 ,允许连接器无限期地等待。默认为 use connectTimeout
embedded.connector.soLingerTime

指定关闭套接字时,连接器使用的套接字应该徘徊多久(以毫秒为单位)。默认情况下,禁用逗留。

embedded.connector.acceptorPriorityDelta指定用于接受新连接的接受器线程的优先级。有关更多详情,请查看 java.lang.Thread JavaDoc 。默认为 5
embedded.connector.acceptQueueSize

指定所有可能的请求处理线程都在使用时传入的连接请求的最大队列长度。在队列饱和时,接收到的任何请求都将被拒绝。默认为 100

embedded.connector.connectTimeout指定接受连接之后,连接器应该等待 要显示的请求 URI 连线 的时间(以毫秒为单位)。输入 -1 ,允许连接器无极限地等待。默认为 60000

HTTP 监听器消息代理 SSL 属性

Scroll Table Layout
widths40%,60%

embedded.ssl.includeProtocols

HTTPS 连接支持以逗号分割的 SSL 协议列表。如果设置了该属性,则 JVM 中的 SSL 实现只支持列表中的协议。如果该属性未设置,则 使用 JVM 支持的协议(如果 JVM 默认启用其中一个或同时启用了两个则不包括 SSLv2 和 SSLv3)

embedded.ssl.includeCipherSuites

HTTPS 连接支持以逗号分割的密码算法列表。使用 JSSE 算法命名规范来指定密码。如果设置了该属性,则 SSL 实现只支持列表中的密码。如果该属性未设置,则使用 JVM 的默认密码套件, 除了不考虑 安全的套件。 都将支持。因此, 默认情况下,只有非常有限的一组密码可用 于旧版本的 JVM。

embedded.ssl.useCipherSuitesOrder

将该属性设置为 true ,强制执行服务器的密码顺序(来自密码设置)。将该属性设置为 false ,选择客户端显示的第一个可接受密码套件。该功能要求 Java 8 或更高版本。默认为 undefined,这将这将导致 JSSE 实现顺序的定义。

embedded.ssl.maxCertPathLength

验证客户端证书时,允许最大中间证书数。默认为 5

embedded.ssl.crlPath将路径设置为包含证书撤销列表的文件,该列表用于验证客户端证书。如果该属性未设置,则不会根据证书撤销列表检查客户端证书。
embedded.ssl.keyManagerAlgorithm设置要使用的证书编码算法。默认情况下,使用 KeyManagerFactory.getDefaultAlgorithm() ,它为 Sun JVMs 返回 SunX509 。IBM JVMs 返回 IbmX509
embedded.ssl.truststoreAlgorithm设置用于信任库的算法。如果该属性未设置,则使用 javax.net.ssl.TrustManagerFactory.getDefaultAlgorithm() 反悔的默认值。
embedded.ssl.useKeyManagerAlgorithmForTruststore如果该属性设置为 true,则密钥管理器算法用作信任库算法。这是 embedded.ssl.truststoreAlgorithm 属性需要的先例。默认为 false

例如:发送通讯报文到服务

假定希望为通常可以通过 http://example.parasoft.com:9080/BookStore访问的服务创建消息。可以用以下设置来创建 HTTP 代理: 

...

相同情况下,所有跳转至这些路径(包括子路径)的通讯报文都将发送给服务。在第二个示例中,发送给 /SomeOtherPath/SubPath 的通讯报文会发送给 /BookStore/SubPath。由于保留了查询,/SomeOtherPath?param=value 将发送到 /BookStore?param=value。

转发请求到要求数据头文件名区分大小写的服务

当请求转发给要求 HTTP 数据头名称区分大小的服务时,如果正在使用桌面版的 Virtualize 服务器,您的消息代理数据头将使用小写字母,此时,可能无法正常工作。

...

还可以解决特定消息代理的 HTTP 数据头大小写问题。在 /VirtualAssets/ 目录中创建一个 <proxy-name>.headers 文件,并使用要传递给特定代理的指定大小写添加数据头.该文件将应用于特定代理,并覆盖全局文件。右键单击 UI 中的服务器,并重新部署所有虚拟资产,以便在您的环境中开始使用该文件。

示例数据头文件

Code Block
X-AUTHORIZATION
ANOTHER-HEADER
HEADER3


例如:发送通讯报文到虚拟资产

代理也可以发送通讯报文到虚拟资产。在这种情况下,就像输入另一个服务一样,输入 Virtualize 服务器的主机和端口信息。

...

Info
title转发请求到要求数据头文件名区分大小写的服务

当请求转发给要求 HTTP 数据头名称区分大小的服务时,如果正在使用桌面版的 Virtualize 服务器,您的消息代理数据头将使用小写字母,此时,可能无法正常工作。有关更多详情,请查阅 HTTP 配置 Forwarding Requests to Services that Require Case-sensitive Header Names

Anchor
Security Configuration
Security Configuration
安全配置

安全配置有两个方面: 

因此,根据您的配置,您可以执行服务器级别配置、代理级别配置,或者两者都执行。

Anchor
Proxy-Level Configuration
Proxy-Level Configuration
代理级别配置

代理级别安全配置(如果您正向其转发通讯报文的服务使用 SSL 和/或访问身份验证,该配置是有关配置),它涵盖了:

Anchor
SSL
SSL
SSL

SSL 要求额外的设置。在配置面板的下方,需要指定:

...

选项说明
Kerberos service principal指定对请求进行身份验证的服务主体。

Anchor
Authentication
Authentication
Basic/Digest 身份验证

如果正在测试的应用程序提供 Basic 和 Digest 的身份验证凭证作为请求的一部分,并将它们作为 HTTP 数据头的一部分进行传输,则代理将不加修改地将它们传递给服务(与它处理其他 HTTP 数据头的方法相同)。 

Anchor
NTLM Authentication
NTLM Authentication
NTLM 身份验证

如果服务要求 NTLM 身份验证,请提供 NTLM 部分的用户名和密码。


Anchor
Kerberos Authentication
Kerberos Authentication
Kerberos 身份验证

如果服务要求 Kerberos 身份验证,请在 Kerboros 身份验证部分设置 Kerboros Service Principal

Anchor
Server-Level Configuration
Server-Level Configuration
服务级别配置

服务级别安全配置(如果 AUT 使用 SSL 和/或访问身份验证,则这它是相关设置),它涉及了:

Anchor
Configuring the Virtualize Server
Configuring the Virtualize Server
配置 Virtualize 服务器

该 Virtualize 服务器默认使用端口 9080。如果希望更改代理端口(如,通过将服务器移出公共/已知端口以提供安全),请查阅 Using an Alternative Port for the Virtualize HTTP Server

如果 AUT 使用 SSL,则需要配置 Virtualize 服务器,如 Configuring SSL (HTTPS) for the Virtualize Server中所述。 

Anchor
Using NTLM with WAFFLE
Using NTLM with WAFFLE
使用具有 WAFFLE 的 NTLM

若要使用 NTLM 的第三方库 WAFFLE:

  1. 请将下面的 jar 文件复制到 tomcat 的 lib 目录中: jna.jar, platform.jar, wafflejna.jar
  2. 将以下内容添加到 tomcat/conf/server.xml

    Code Block
    <Context>
      <Valve className="waffle.apache.NegotiateAuthenticator" principalFormat="fqn" roleFormat="both"/> 
      <Realm className="waffle.apache.WindowsRealm" /> </Context> 
    Info
    titleserver.xml 在哪里?

    如果安装了 Virtualize ,但没有安装 SOAtest 的情况下:启动 Virtualize,确保至少创建了一个响应程序,然后更改 [Virtualize install dir]/eclipse/plugins/com.parasoft.xtest.libs.web_[Virtualize_ver]/root/tomcat/conf/server.xml中的 server.xml 文件。

    如果同时既安装了 Virtualize 也安装了 SOAtest:启动 Virtualize,确保至少创建了一个响应程序,然后更改 [SOAtest install dir]/eclipse/plugins/com.parasoft.xtest.libs.web_[SOAtest_ver]/root/tomcat/conf/server.xml中的 server.xml 文件。

  3. 将以下内容添加到 tomcat/conf/web.xml

    Code Block
    <security-role> 
      <role-name>Everyone</role-name> 
    </security-role> 
    <security-constraint> 
      <display-name>Waffle Security Constraint</display-name> 
      <web-resource-collection> 
        <web-resource-name>Protected Area</web-resource-name> 
        <url-pattern>/*</url-pattern> 
      </web-resource-collection> 
      <auth-constraint> 
        <role-name>Everyone</role-name> 
      </auth-constraint> 
    </security-constraint> 
  4. 重启服务。

有关更多详情,请查阅单点登录:Tomcat Negotiate Authenticator (Kerberos + NTLM) w/ Waffle 教程和 WAFFLE 首页。

Anchor
Using Unsupported Configurations (Kerberos with WAFFLE, JAAS)
Using Unsupported Configurations (Kerberos with WAFFLE, JAAS)
使用不支持的配置(具有 WAFFLE、JAAS 的 Kerberos)

WAFFLE 包括对 Kerberos 身份验证的支持。关于指导和支持,请查看 WAFFLE 首页。 

...