Java 與 .NET 的基于 WS-Security的Web Services集成實(shí)現(xiàn)
rottenapple
本文適用讀者:
Web Services開發(fā)人員
應(yīng)具備的知識(shí):
使用過VS.NET2003 +WSE開發(fā)過Web Services,會(huì)使用Jbuilder9開發(fā)簡(jiǎn)單的java應(yīng)用程序。
一:內(nèi)容簡(jiǎn)介
WS-Security描述通過消息完整性,消息機(jī)密性和單獨(dú)消息認(rèn)證提供保護(hù)質(zhì)量的SOAP消息傳遞增強(qiáng)。適用于下列場(chǎng)合:
1. 客戶必須能夠確定消息來(lái)自哪個(gè)人并能夠證實(shí)發(fā)送方就是那個(gè)發(fā)送方聲稱的發(fā)送方。
2. 客戶必須能夠確定被傳送的數(shù)據(jù)沒有篡改。
本文介紹了如何實(shí)現(xiàn)基于WS-Security協(xié)議的Java客戶端程序與 .net的web services的集成調(diào)用。
二:平臺(tái)及工具
操作系統(tǒng):win2000 server
軟件:VS.NET2003+WSE1.0 sp1
Jbuilder9
axis-wsse-1.0(axis實(shí)現(xiàn)的ws-security)
三:實(shí)現(xiàn)
1. 打開VS.NET2003,新建一個(gè)ASP.Net Web Services工程。增加一個(gè)名稱為SumService的Web Services頁(yè)面,其核心代碼如下:
[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功能,并在“安全”選項(xiàng)欄中添加一個(gè)密碼提供類(PasswordProvider)用來(lái)實(shí)現(xiàn)WS-Security的安全認(rèn)證。同時(shí),選中trace功能用以跟蹤此Web Services的接收到請(qǐng)求SOAP信息和返回的SOAP信息。
3. 添加Microsoft.Web.Services 引用,添加一個(gè)新的class,命名為PasswordProvider,此類實(shí)現(xiàn)了WSE中的IPasswordProvider接口,用來(lái)提供WS-Security的用戶身份驗(yàn)證功能。其核心代碼如下:
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";
}
}
}
至此,一個(gè)實(shí)現(xiàn)了WS-Security中的UsernameToken的Web Services就基本實(shí)現(xiàn)了。此時(shí)建議使用.net先開發(fā)一個(gè)客戶端進(jìn)行測(cè)試,測(cè)試成功后再開發(fā)相應(yīng)的java客戶端程序。(如何開發(fā)請(qǐng)參見我以前寫的關(guān)于WSE的文章或到微軟MSDN上察看)
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!