...
您将需要服务的主机,端口和路径 创建一个虚拟的设置基本的 HTTP 连接选项。使用通常用于直接向服务发送消息的设置。
连接设置
要指定基本的 HTTP 连接选项,请在 Proxy Settings Connection 选项卡中设置以下服务和侦听详细信息。
Proxy Settings (incoming)
这些设置指定来自客户端的消息应连接到的位置,以便与被测应用程序进行通信。
...
Listener | 您可以从下拉菜单中选择在创建代理时定义的 HTTP 侦听器 (请参阅 Creating Proxies)或使用默认侦听器。 你可以在这一部分添加 HTTP 侦听器:
|
---|---|
代理监听路径 | 启用代理应该监听传入连接的路径。 任何两个消息代理都不能具有具有相同代理路径或与现有虚拟资产的 HTTP 路径匹配的路径的 HTTP 连接。 更多相信信息请参考 HTTP 配置 Service Forward Path and Proxy Listen Path 。 |
代理 URL | 显示应提供给 AUT 的 URL。查阅 将 AUT 指向代理Directing AUTs to Proxies 以获得其他信息。 |
侦听器端口的 SSL 设置。
启用使用 Use keystore 选项来配置服务器端 SSL 设置。
...
Key store file | 指定密钥存储文件的路径。您可以手动输入路径或浏览文件系统或工作空间。 |
---|---|
Key store password | 指定用于访问密钥库的密码。 |
Key store type | 从下拉菜单中选择密钥库类型,然后单击 Load。 |
Primary Connection (outgoing)
Service URL | 包含目标应用程序的完整 URL(包括服务主机,服务端口和转发路径)。您可以在此处输入完整的 URL and/or 在以下字段中编辑特定组件。在一个区域中进行的更新将传播到另一区域(例如,如果您在 URL 中修改端口,则 Service port 字段中的值将自动更新)。 |
---|---|
服务主机 | 输入服务所在机器的主机名。这是代理将发送消息的机器。 如果要使代理转发到本地服务器上的虚拟资产而不消耗HTTP连接,请输入 |
服务端口 | 输入服务正在监听的端口。这是代理将发送消息的端口。 |
服务转发路径 | (可选项)输入代理应该其接收到的消息转发到的路径。如果为空,则默认为 Proxy listen path 字段中的值。 如果 HTTP 代理正在向 localhost 发送消息,则必须输入一个 Service forward path ,因为代理不允许转发其自身。 如果 Service forward path 发送重定向后,代理将跟随重定向并进行响应。它将不会把重定向传递回客户端。 更多相信信息请参考 HTTP 配置 Service Forward Path and Proxy Listen Path 。 |
Secondary Connection (outgoing)
请启用 Use secondary connection if primary fails 选项,如果您希望在主连接失败或响应器不可用时将流量重定向到辅助代理端点。如果响应状态代码为 400 级或更高,则连接将被视为“failed”。
...
如果启用此选项,则可以从可用的录制选项中进行选择(如下所述)。
Recording options
这些设置确定在指定辅助端点时如何记录流量。
- 记录两个连接:记录主从连接的流量。来自主服务器的错误消息将不会被记录; 而是将消息发送到辅助站点,并记录响应。第二连接报告的错误将被录制。
- 仅在主要连接上记录:记录首次连接的流量。不录制错误。
- 仅在辅助连接上记录:记录第二连接的流量,包括错误。
安全选项卡设置
需要去完成服务 SSL 部分 如果您使用的服务使用SSL时。
...
有关在这些字段正下方填写服务 SSL 字段的详细信息,请参阅。 HTTP 配置 Security Configuration.
代理服务器选项卡设置
您可以在此选项卡中为消息代理服务器指定服务器 这使您可以配置其他代理服务器来收发来自不同消息代理的通讯报文。此配置可控制代理服务器处理被测应用程序和特定消息代理之间的通讯报文。
要在此级别指定代理设置,请在代理的 Proxy Serve 标签中提供适当的详细信息。
不支持 SSL。
Anchor | ||||
---|---|---|---|---|
|
在最简单的情况下,您可以将 Proxy listen path 设置为服务的路径并将 Service forward path 保留为空。使用此配置,代理将把它在该路径上所接收的所有消息自动转发到 Service host 和 Service port上的相同路径。
...
如果 Proxy listen path 和 Service forward path 不同,则请求中 Proxy listen path 之后的任何段都将附加到转发的请求中。Proxy listen path 本质上被 Service forward path 替换,以便将整个路径(由代理接收)发送到服务。
在路径中使用通配符。
您可以使用通配符指定动态路径段。例如, 将路径配置为/path/*/service
将使以下路径可以转到同一代理:
...
请求路径:
/path/1/service/bank/account
forward path:
/asset/path/bank/service/1/account
标头变更
在大多数情况下,代理会将所有标头直接传递到目标服务或从目标服务传递。某些内容长度相关的标头可能会更改,以适合代理服务器的工作方式。例如,代理服务器不支持使用“分块”传输编码进行响应,并且将替换发送的“主机”标头以匹配其自己的主机名(但是,它确实支持从目标服务接收分块的请求和分块的响应)。
设置目标服务
代理可以使用服务器上的虚拟或测试资产作为其目标服务。
- 将服务主机和端口设置为部署虚拟资产的 Virtualize 服务器的主机和端口。如果要使代理转发到本地服务器上的虚拟资产而不消耗HTTP连接,请输入
localhost
或者127.0.0.1
而不是实际的主机名。 - 将代理连接的 Service forward path 设置为虚拟资产的路径(可在 HTTP endpoint下的 Transports> HTTP 选项卡中找到)。
分块/分组行为
代理支持从目标服务接收分块的请求和分块的响应。如果服务响应使用 HTTP 分块,则代理将对响应进行分组,然后将其返回给原始 caller/AUT。
其他 HTTP 消息代理配置
可以创建属性文件来配置其他 HTTP 监听器设置。通过属性文件,您可以微调 HTTP 监听器性能并指定其他 SSL 设置。
- 创建纯文本文件,并指定要设置的属性(请查阅 HTTP 配置Listener Message Proxy Performance Properties 和 HTTP 配置Listener Message Proxy SSL Properties)。
将文件保存到工作空间的VirtualAssets、 目录中,并将其命名为
embeddedServer.properties
。
每次启用具有 HTTP 侦听器的代理时,都会读取该文件。
HTTP 监听器消息代理属性
Scroll Table Layout | ||
---|---|---|
|
embedded.connector.maxHttpHeaderSize | 指定请求和响应 HTTP 标头的最大(字节)。如果没有指定,请将该属性设置为 8192 (8 KB)。 |
---|---|
embedded.connector.relaxedPathChars | 以未编码形式指定 URI 路径中应允许的字符。该值可以是以下字符的任意组合:
值中存在的任何其他字符将被忽略。如果不包括此属性,则 Tomcat 将在 URI 路径中拒绝上述未编码形式的字符。 有关更多详情,请参考 Tomcat 文档: https://tomcat.apache.org/tomcat-8.5-doc/config/http.html。 |
embedded.connector.relaxedQueryChars | 以未编码形式指定 URI 查询中应允许的字符。该值可以是以下字符的任意组合:
值中存在的任何其他字符将被忽略。如果不包括此属性,则 Tomcat 将在 URI 查询中拒绝上述未编码形式的字符。 有关更多详情,请参考 Tomcat 文档: https://tomcat.apache.org/tomcat-8.5-doc/config/http.html。 |
HTTP 监听器消息代理性能属性
所有属性都是可选的,非整数值将被忽略。
Scroll Table Layout | ||
---|---|---|
|
embedded.connector.maxThreads | 指定连接器应创建的请求处理线程的最大数量。此属性确定可以处理的同步请求的最大数。默认为 |
---|---|
embedded.connector.minThreads | 指定应始终运行的最小线程数。默认为 |
embedded.connector.acceptors | 指定应用于接受连接的线程数。在具有多个 CPU 的计算机上或使用多个非保持活动的连接时,请增加此值。大多数情况下, |
embedded.connector.idleTimeout | 指定连接器在关闭连接之前应等待另一个 HTTP 请求的毫秒数。指定为 -1 表示允许连接器无限期地等待。默认为 use connectTimeout。 |
embedded.connector.soLingerTime | 指定关闭套接字时,连接器使用的套接字应延迟的毫秒数。默认情况下,禁用延迟。 |
embedded.connector.acceptorPriorityDelta | 指定用于接受新连接的接受线程的优先级。有关其他详细信息,请查阅 java.lang.Thread JavaDoc 。默认为 5 。 |
embedded.connector.acceptQueueSize | 当所有可能的请求处理线程都在使用时,为传入的连接请求指定最大队列长度。队列已满时收到的任何请求都将被拒绝。默认为 |
embedded.connector.connectTimeout | 指定连接器在接受连接后应等待多少毫秒 以等待请求 URI 行出现 。输入 -1 表示允许连接器无限期地等待。默认为 60000 。 |
HTTP 监听器消息代理 SSL 属性
Scroll Table Layout | ||
---|---|---|
|
embedded.ssl.includeProtocols | 支持 HTTPS 连接的以逗号分隔的 SSL 协议列表。如果指定,JVM 中的 SSL 实现将仅支持列表中的协议。如果没有设置该属性,则使用 JVM 支持的 协议 (默认情况下,如果 JVM 启用它们中的一个或两个,则排除 SSLv2 和 SSLv3)。 |
---|---|
embedded.ssl.includeCipherSuites | 支持 HTTPS 连接的以逗号分隔的加密密码列表。使用 JSSE 密码命名规范来指定密码。如果设置了该属性, 则 SSL 实现将仅支持列表中的密码。如果未设置该属性,则 JVM 默认的密码套件(除了不被认为安全的套件之外) 都将受到支持。因此, 默认情况下,老版本的 JVM 只能使用非常有限的一组密码。 |
embedded.ssl.useCipherSuitesOrder | 设置为 |
embedded.ssl.maxCertPathLength | 验证客户端证书时允许的中间证书的最大数量。默认为 5。 |
embedded.ssl.crlPath | 设置包含用于验证客户端证书的证书吊销列表的文件的路径。如果未定义,则不会根据证书吊销列表检查客户端证书。 |
embedded.ssl.keyManagerAlgorithm | 设置要使用的证书编码算法。默认情况下,使用 KeyManagerFactory.getDefaultAlgorithm() ,它将返回 Sun JVM 的 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 标头名称的服务时可能无法正常运行。
...
您还可以解决特定消息代理的 HTTP 标头大写问题。您可以在 /VirtualAssets/ 目录下创建一个 <proxy-name>.headers 文件,并添加使用要为特定代理传递的特定大写的标头。此文件将应用于特定代理并覆盖全局文件。右键单击 UI 中的服务器,然后重新部署所有虚拟资产,以开始在环境中使用此文件。
示例标头文件
Code Block |
---|
X-AUTHORIZATION ANOTHER-HEADER HEADER3 |
例如:向虚拟资产发送通讯报文
代理还可以向虚拟资产发送通讯报文。在这种情况下,请输入 Virtualize 服务器的主机和端口信息,就像它只是另一个服务一样。
...
Info | ||
---|---|---|
| ||
如果使用 Virtualize 桌面服务器,则消息代理标头将小写,并且在请求转发到区分大小写的 HTTP 标头名称的服务时可能无法正常运行。有关更多详情,请查阅 HTTP 配置 Forwarding Requests to Services that Require Case-sensitive Header Names 。 |
Anchor | ||||
---|---|---|---|---|
|
安全配置有两个方面:
- 如果要转发通讯报文的服务使用 SSL 和/或访问身份验证,则您需要执行代理级配置 (来自代理的 UI 控件)。
- 如果 AUT 使用 SSL 和/或访问身份验证,泽您需要执行服务级配置 (针对基于 Tomcat 的服务器)。
根据您的配置,您可以配置安全设置或两个都配置。
代理级配置
如果转发通讯报文的服务使用 SSL 和/或访问身份验证,则代理级安全配置包括:
Anchor | ||||
---|---|---|---|---|
|
对于 SSL,需要其他设置。在配置面板的下半部分,您需要指定是否:
...
选项 | 说明 |
---|---|
Kerberos service principal | 指定服务主体以对请求进行身份验证。 |
Anchor | ||||
---|---|---|---|---|
|
如果待测试应用程序提供摘要式认证凭据作为请求的一部分,并将它们作为 HTTP 标头的一部分传输,则代理会将它们传递给未修改的服务(就像它处理其他 HTTP 标头一样)。
Anchor | ||||
---|---|---|---|---|
|
如果您的服务需要 NTLM 身份验证,请提供 NTLM 部分中的用户名/密码。
Anchor | ||||
---|---|---|---|---|
|
如果您的服务需要 Kerberos 身份验证,请在身份验证部分设置 Kerberos Service Principal 。
服务级配置
如果 AUT 使用 SSL 和/或访问身份验证,则服务器级安全配置可能涉及:
- Configuring the Virtualize Server
- Using NTLM with WAFFLE
- Using Unsupported Configurations (Kerberos with WAFFLE, JAAS)
- HTTP 配置
- HTTP 配置
- HTTP 配置
配置 SOAtest 和 Virtualize 服务器
您可以更改默认端口号 (9080)、启用 SSL 并配置其他服务器设置。有关更多详情,请查阅 Configuring Virtualize Server 。
Anchor | ||||
---|---|---|---|---|
|
要将第三方库 WAFFLE 用于 NTLM:
- 请将以下 jar 文件拷贝到 tomcat 的
lib
目录下:jna.jar, platform.jar, wafflejna.jar
。 将以下内容添加到
tomcat/conf/server.xml
。Code Block <Context> <Valve className="waffle.apache.NegotiateAuthenticator" principalFormat="fqn" roleFormat="both"/> <Realm className="waffle.apache.WindowsRealm" /> </Context>
Info title 文件 server.xml 在哪里? 如果安装了 SOAtest,但没有安装 Virtualize,请执行以下操作:启动 SOAtest,确保至少创建了一个响应程序,然后修改 [SOAtest install dir]/eclipse/plugins/com.parasoft.xtest.libs.web_[version]/root/tomcat/conf/server.xml 目录下的 server.xml 文件。
如果安装了 Virtualize,但没有安装 SOAtest,请执行以下操作::启动 Virtualize,确保至少创建了一个响应程序,然后修改 [Virtualize install dir]/eclipse/plugins/com.parasoft.xtest.libs.web_[version]/root/tomcat/conf/server.xml 目录下的 server.xml 文件。
如果既安装了 Virtualize,也安装了 SOAtest,请执行以下操作:启动 Virtualize,确保至少创建了一个响应程序,然后修改 [SOAtest install dir]/eclipse/plugins/com.parasoft.xtest.libs.web_[version]/root/tomcat/conf/server.xml 目录下的 server.xml 文件。
将以下内容添加到
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>
- 重启服务。
有关更多详情,请查阅单点登录。Tomcat Negotiate Authenticator (Kerberos + NTLM) w/ Waffle 教程和 WAFFLE 主页。
Anchor | ||||
---|---|---|---|---|
|
WAFFLE 包括对 Kerberos 身份验证的支持,请参阅 WAFFLE 主页以获得指导和支持。
...