Java 與 .NET 的基于 WS-Security的Web Services集成完成(上)
發(fā)表時間:2023-08-11 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]Java 與 .NET 的基于 WS-Security的Web Services集成實現(xiàn) rottenapple本文適...
Java 與 .NET 的基于 WS-Security的Web Services集成實現(xiàn)
rottenapple
本文適用讀者:
Web Services開發(fā)人員
應(yīng)具備的知識:
使用過VS.NET2003 +WSE開發(fā)過Web Services,會使用Jbuilder9開發(fā)簡單的java應(yīng)用程序。
一:內(nèi)容簡介
WS-Security描述通過消息完整性,消息機密性和單獨消息認證提供保護質(zhì)量的SOAP消息傳遞增強。適用于下列場合:
1. 客戶必須能夠確定消息來自哪個人并能夠證實發(fā)送方就是那個發(fā)送方聲稱的發(fā)送方。
2. 客戶必須能夠確定被傳送的數(shù)據(jù)沒有篡改。
本文介紹了如何實現(xiàn)基于WS-Security協(xié)議的Java客戶端程序與 .net的web services的集成調(diào)用。
二:平臺及工具
操作系統(tǒng):win2000 server
軟件:VS.NET2003+WSE1.0 sp1
Jbuilder9
axis-wsse-1.0(axis實現(xiàn)的ws-security)
三:實現(xiàn)
1. 打開VS.NET2003,新建一個ASP.Net Web Services工程。增加一個名稱為SumService的Web Services頁面,其核心代碼如下:
[SoapRpcMethod(Action="http://www.contoso.com/Rpc",RequestNamespace="http://www.contoso.com/SU",ResponseNamespace="http://www.contoso.com/SU")]
[WebMethod]
public int IntAdd(int a,int b)
{
SoapContext requestContext = HttpSoapContext.RequestContext;
if (requestContext == null)
throw new ApplicationException("Only SOAP requests are permitted.");
return a+b ;
}
2. 使用WSE Setting Tool 設(shè)定此Asp Web Services使用WSE功能,并在“安全”選項欄中添加一個密碼提供類(PasswordProvider)用來實現(xiàn)WS-Security的安全認證。同時,選中trace功能用以跟蹤此Web Services的接收到請求SOAP信息和返回的SOAP信息。
3. 添加Microsoft.Web.Services 引用,添加一個新的class,命名為PasswordProvider,此類實現(xiàn)了WSE中的IPasswordProvider接口,用來提供WS-Security的用戶身份驗證功能。其核心代碼如下:
public class PasswordProvider : IPasswordProvider
{
public PasswordProvider()
{
//
// TODO: Add constructor logic here
//
}
public string GetPassword(UsernameToken token)
{
if (token.Username == “username”)
{
return “password”;
}
else
{
return "love";
}
}
}
至此,一個實現(xiàn)了WS-Security中的UsernameToken的Web Services就基本實現(xiàn)了。此時建議使用.net先開發(fā)一個客戶端進行測試,測試成功后再開發(fā)相應(yīng)的java客戶端程序。(如何開發(fā)請參見我以前寫的關(guān)于WSE的文章或到微軟MSDN上察看)