soapui 测试soap

在这个分为三部分的系列中,我将演示如何使用SoapUI API工具来调用安全的WCF SOAP服务。 第一篇文章将着重于创建将要测试的系统的服务。 第二篇文章将介绍在基本身份验证机制保护的情况下调用它所需的步骤。 在最后一部分中,我将对初始服务进行一些更改,以使其受证书认证机制的保护。 在同一篇文章中,我还将演示如何使用SoapUI调用它。

WCF基本身份验证服务

使用“ 基本身份验证”传输安全性机制来保护对本文中要实现的服务中的资源的访问。 Windows Communication Foundation 提供的众多功能之一。 这种机制与HTTPS结合使用以提供机密性。

这项服务公开了一个端点,该端点计算出很大的一笔款项 。 为了快速入门,我们将使用Visual Studio 2019中提供的WCF服务应用程序的默认模板。

在菜单文件中,依次单击新建,项目,或单击开始页面以启动新项目。 让我们将解决方案和项目命名为AVeryBigSum_BasicAuthentication

现在,您将看到已经添加到WCF服务项目中的几个文件。 我们可以选择删除接口IService1.cs和服务Service1.svc文件来创建新文件。 否则,我们可以重命名这两个文件,因此请注意重命名以及Service.svc文件的标记,方法是右键单击它->“ 查看标记”并更改为以下名称。

<%@ ServiceHost Language="C#" Debug="true"
Service="AVeryBigSum_BasicAuthentication.Avbs" CodeBehind="Avbs.svc.cs" %>

重命名两个文件后,打开IAvbs.cs,复制以下代码并将其添加到修改后的界面中。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;namespace AVeryBigSum_BasicAuthentication
{[ServiceContract]public interface IAvbs{[OperationContract]long AVeryBS(long[] ar);}
}

如果您选择删除那些文件,则可以通过右键单击项目并添加新项来添加新界面。 选择接口模板并将其重命名为IAvbs。 同样,您需要复制上面的代码并将其添加到新创建的界面中。

该服务仅实现接口协定中定义的一项操作。 要实现它,我们需要修改由VStudio创建的默认文件或添加一个新的服务类Avbs.svc,它将实现上面定义的接口。

using System;
/*...*/
namespace AVeryBigSum_BasicAuthentication
{public class Avbs : IAvbs{public long AVeryBS(long[] ar){long aVeryBigSum = 0;foreach (long i in ar) aVeryBigSum += i;return aVeryBigSum;}}
}

到目前为止,我们已经定义了服务合同,即带有示例定义的操作。 现在我们必须定义其端点。 要添加端点,我们需要更改配置文件(web.config)。 除了复制和粘贴外,我们还需要了解每个WCF标签的重要性。

使用SoapUI 1-Secure WCF SOAP – AppSettings

因此,让我们从AppSettings元素开始。 此元素包含自定义应用程序设置。 元素存储自定义应用程序配置信息,例如数据库连接字符串,文件路径,XML Web服务URL或应用程序的任何其他自定义配置信息。

我们使用此元素来存储服务的用户密码凭据。 使用ConfigurationSettings库以这种方式在代码中访问元素中指定的键/值对,即ConfigurationManager.AppSettings [“ AVeryBigSum_User”]。

<appSettings><add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/><add key="AVeryBigSum_User" value="AVeryBigSum"/><add key="AVeryBigSum_Pass" value="12345"/></appSettings>

因此,我们可以更改这些凭据,而无需重建项目的动态链接库文件 (DLL)。

尽管使用上述元素具有优势,但与服务的定义有关的所有魔术都发生在ServiceModel标记的边界内。

使用SoapUI 2保护WCF SOAP –行为

该标签定义了端点和服务分别消耗的协议元素。 服务凭证元素对于定义至关重要。 它指定身份验证过程中使用的自定义验证模式。

<behaviors><serviceBehaviors><behavior name="DebugModeBehavior"><!-- To avoid disclosing metadata information, set the values below to false before deployment --><serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/><!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information --><serviceDebug includeExceptionDetailInFaults="true"/><!--For UserPass Authentication--><serviceCredentials><userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="AVeryBigSum_BasicAuthentication.ServiceAuthenticator, AVeryBigSum_BasicAuthentication"/></serviceCredentials></behavior></serviceBehaviors></behaviors>

服务凭证 s中,定义了另一个重要属性,用于指定用户名和密码验证的设置。 userNamePasswordValidationMode属性设置如何验证凭据。 我们的服务使用自定义类来验证凭据。 此类AVeryBigSum.ServiceAuthenticator可在AVeryBigSum项目中找到。

使用SoapUI的3-安全WCF SOAP –绑定

WCF服务中的每个终结点都需要明确指定绑定。 绑定由绑定元素的有序堆栈组成,每个绑定元素指定连接到服务端点所需的一部分通信信息。

如我们所见,我们正在使用WSHttpBinding。 它表示可互操作的绑定,该绑定支持分布式事务,安全,可靠的会话。

<bindings><wsHttpBinding><!-- configure wsHttp binding with Transport security mode and clientCredentialType as Certificate --><binding name="wsHttpBinding_LargeBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" bypassProxyOnLocal="false"transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="250000000" maxReceivedMessageSize="250000000" messageEncoding="Text"textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false"><readerQuotas maxDepth="2000000" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/><reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/><!--For UserPass Authentication--><security mode="TransportWithMessageCredential"><message clientCredentialType="UserName" establishSecurityContext="false"/></security></binding></wsHttpBinding></bindings>

WSHttpBinding使用HTTP传输并提供消息安全性,事务,可靠的消息传递和WS-Addressing,它们是默认启用的,也可以通过单个控件设置使用。

在WSHttpBinding元素内部,我们将安全模式定义为TransportWithMessageCredential。 传输确定提供传输级别安全性的实际机制。 对于HTTP,该机制是基于HTTP(HTTPS)的安全套接字层(SSL);

使用SoapUI的4种安全WCF SOAP –服务

最后,在服务元素处,我们定义了终结点,公开了服务元数据。 发布元数据(例如描述服务使用的所有方法和数据类型的Web服务描述语言(WSDL)文档)很有用。 SoapUi将在此传奇的下一篇文章中使用它来检索和调用所有可服务的端点。

<services><service behaviorConfiguration="DebugModeBehavior" name="AVeryBigSum_BasicAuthentication.Avbs"><endpoint address="endpointAVeryBigSum_BasicAuthentication" binding="wsHttpBinding"bindingConfiguration="wsHttpBinding_LargeBinding" name="EndpointAVeryBigSum_BasicAuthentication"contract="AVeryBigSum_BasicAuthentication.IAvbs" /><endpoint address="mex" binding="wsHttpBinding" bindingConfiguration="wsHttpBinding_LargeBinding"name="mexEndpoint" contract="IMetadataExchange" /></service></services>

使用SoapUI的5种安全WCF SOAP –自定义验证器类

定制验证器扩展了UserNamePasswordValidator类,并覆盖了Validate方法 该验证器在服务行为中定义为默认的授权管理器,如上面行为部分中所示。 此类将客户端调用收到的信息与AppsSetting元素中定义的信息进行比较。

using Microsoft.IdentityModel.Tokens;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IdentityModel.Selectors;
using System.Linq;
using System.ServiceModel;
using System.Web;
namespace AVeryBigSum_BasicAuthentication
{public class ServiceAuthenticator : UserNamePasswordValidator{public override void Validate(string userName, string password){if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password))throw new SecurityTokenException("Username and password required");if (!(userName == ConfigurationManager.AppSettings["AVeryBigSum_User"] &amp;&amp; password == ConfigurationManager.AppSettings["AVeryBigSum_Pass"]))throw new FaultException(string.Format("Wrong username ({0}) or password ", userName));}}
}

为了使此类正常工作,我们需要在项目中添加两个外部库。 我们可以通过右键单击项目-> Manage NuGet Packages,浏览Microsoft.IdentityModel.LoggingMicrosoft.IdentityModel.Tokens软件包并添加两者来完成此操作。

现在我们已经定义了端点,接下来,我们将服务托管在本地开发服务器中。

部署并运行服务

1 –要将我们的服务托管在IIS中,请右键单击该项目,然后转到“ 属性” 。 在属性窗口中,选择“ Web”选项卡。

2-现在在“ Web上的服务器”设置下,您将看到以下详细信息,将“ IIS Express”更改为“ IIS Server”。


3 –现在,单击使用以管理员身份运行的Visual Studio创建虚拟目录。 您将收到一条消息:虚拟目录已成功创建! 否则,您将收到一条错误消息,并且您需要以管理员身份再次启动Visual Studio。

现在按F5键,您的应用程序将在IIS服务器而不是IIS express上启动并运行。


结论

在本演示结束时,我们将提供一个由SoapUI调用的安全服务。 我们的下一篇文章将逐步演示如何做到这一点。

另外,可以从GitHub存储库访问该示例; 要下载它,请点击此链接 。

翻译自: https://www.javacodegeeks.com/2020/04/invoking-different-secure-wcf-soap-services-using-soapui-basic-authentication-part-i.html

soapui 测试soap

soapui 测试soap_使用SoapUI调用不同的安全WCF SOAP服务-基本身份验证,第一部分相关推荐

  1. 使用SoapUI调用不同的安全WCF SOAP服务-基本身份验证,第一部分

    在这个分为三部分的系列中,我将演示如何使用SoapUI API工具来调用安全的WCF SOAP服务. 第一篇文章将着重于创建将要测试的系统的服务. 第二篇文章将介绍在基本身份验证机制保护的情况下调用它 ...

  2. soapui 测试soap_使用SoapUI调用不同的安全WCF SOAP服务-基本身份验证,第二部分

    soapui 测试soap 在本系列的第一篇文章中,我们创建了一个基本的身份验证服务,以使用SoapUI进行调用. 因此,在第二篇文章中,我们将逐步演示如何使用此工具成功调用这种服务. 使用SoapU ...

  3. 使用SoapUI调用不同的安全WCF SOAP服务-基本身份验证,第二部分

    在本系列的第一篇文章中,我们创建了一个基本的身份验证服务,以使用SoapUI进行调用. 因此,在第二篇文章中,我们将逐步演示如何使用此工具成功调用这种服务. 使用SoapUI的1-Basic WCF ...

  4. 使用SoapUI调用安全WCF SOAP服务–第1部分,该服务

    在这个由三部分组成的传奇中,我将演示如何使用SoapUI API工具来调用安全的SOAP服务. 首先,我将专注于创建服务,在接下来的文章中它将充当被测系统. 使用基本身份验证传输安全性机制维护对该服务 ...

  5. (二)WebService之调用soap服务

    引言 利用wsimport进行soap服务进行调用 1注意的地方 当解析本地的wsdl文件时需要修改生成的java文件内部的wsdl地址为在线的wsdl地址例如解析在线的天气预报服务 通过UrlCon ...

  6. java接口测试解析soap_使用SOAPUI作为服务端测试soap接口(WSDL)

    在最近工作中有测试Java编写的soap客户端对于服务端提供的错误报文内容进行解析的需要,由于自己使用Java写的soap服务端代码不能明显的看出报文内容,所以使用soapUI工具作为服务端用于测试. ...

  7. 使用 soapUI 测试 REST 服务

    REST 服务介绍 REST(Representational State Transfer)是 Roy Fielding 博士在 2000 年提出的一种新的软件架构风格,它以资源(resource) ...

  8. SoapUi测试,测试相关问答知识

    2019独角兽企业重金招聘Python工程师标准>>> SoapUi测试 http://www.csdn123.com/html/topnews201408/39/14939.htm ...

  9. 利用SoapUI 测试web service的一些问题总结

    总结两个利用SoapUI 测试web service的一些问题: 1.请求一个soap service 请求的时候:按照下面的配置输入请求地址后, 2.根据实际service接口的需要,传入相应的参数 ...

最新文章

  1. 后端常用开源组件合集(持续更新中)
  2. 第十五届全国大学生智能车全国总决赛获奖信息-东北赛区
  3. winform datagridview控件使用
  4. Bitlocker企业安全加密管理系列-2
  5. 五十五、深入插入排序和选择排序
  6. 怎么打散铺铜_装修辅材有哪些?怎么选?元老级工头:照这样去买你家多住50年...
  7. JVM之垃圾收集器回收种类
  8. 电脑技巧:电脑几种常见的系统故障解答
  9. jquery获取java对象的属性_jQuery - 获得内容和属性
  10. [改善Java代码]非稳定排序推荐使用List
  11. 7-2 古风排版 C语言
  12. 春天不远:熬过寒冬,步入冰川时代,静待下一个新纪元!
  13. vscode连接服务器
  14. FPGA学习-PS2接口
  15. 171025_matlab_imag函数
  16. Real-Time Loop Closure in 2D LIDAR SLAM 翻译和总结(一)
  17. 从今天起,每天写一篇日志,记录我的学习!
  18. python获取指定IP国家代码信息
  19. 物联网助力智慧农业,农民也能成为科技工作者
  20. VCE文件的另类打开方式

热门文章

  1. ADPC2-D 分配颜色
  2. E - Counting Cliques HDU - 5952
  3. 【学习笔记】整体二分
  4. 模板:二维凸包(计算几何)
  5. ssl提高组周六模拟赛【2019.3.2】
  6. 【dfs】【hash】有趣的英语角(2015特长生 T2/luogu 1019)
  7. [XSY] 智慧树(线性同余方程组,线段树/树状数组)
  8. 2017西安交大ACM小学期 毁灭序列[倒跑并查集]
  9. dp 树状数组 逆序元组
  10. jar包天天见,可是你知道它的运行机制吗