soapui 测试soap_使用SoapUI调用不同的安全WCF SOAP服务-基本身份验证,第一部分
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"] && password == ConfigurationManager.AppSettings["AVeryBigSum_Pass"]))throw new FaultException(string.Format("Wrong username ({0}) or password ", userName));}} }為了使此類正常工作,我們需要在項目中添加兩個外部庫。 我們可以通過右鍵單擊項目-> Manage NuGet Packages,瀏覽Microsoft.IdentityModel.Logging和Microsoft.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服务-基本身份验证,第一部分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑鼓点节拍器(电子鼓点节拍器)
- 下一篇: dmn是大脑中哪个区域_DMN中的函数式