如何选择正确的Web服务安全解决方案

互联网 | 编辑: 杨剑锋 2007-08-08 15:42:00转载 一键看全文

用户证书代码

口令从PasswordHandler中重新检索。它将口令存储在一个由用户名索引的地图中。下面是示例样本的用户证书代码:

public class PasswordHandler implements CallbackHandler {
   private Map passwords = new HashMap();
   public PasswordHandler() {
      passwords.put("johndoe", "abc123");
   }
   ...
The following SOAP message is observed by the TCP/IP monitor after running the client: 
<soap:Envelope ...>
   <soap:Header>
      <wsse:Security ...>
         <wsse:UsernameToken ...>
            <wsse:Username ...>
               johndoe
            </wsse:Username>
            <wsse:Password ...>
               abc123
            </wsse:Password>
         </wsse:UsernameToken>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <multiply xmlns="http://ejb.security.ws.dev.com">
         <a>5.0</a>
         <b>7.0</b>
      </multiply>
   </soap:Body>
</soap:Envelope>

现在这个SOAP消息的头部部分包含了用户名和口令。服务器对用户证书进行验证,或者许可或者拒绝了对目标Web服务的访问。为了防止对口令的窃听,你必须使用消息级的加密或者以前描述的SSL方法。

一个.net2.0客户端也将一个UsernameToken添加到SOAP/HTTP的头部。为了支持这项功能,你必须在你的Visual Studio环境中安装WSE 3.0库及其扩展。(你可从这里下载。)你必须像在Java客户端的例子中所做的那样,从WSDL中生成一个客户端的stub。生成的stub看起来会是如下这样子:

...    
public partial class CalculatorServiceWse : Microsoft.Web.Services3.WebServicesClientProtocol {
        
        private System.Threading.SendOrPostCallback multiplyOperationCompleted;
        
        private bool useDefaultCredentialsSetExplicitly;
	  ...

一旦stub被创建,客户端代码就会展现这个stub,并且指定UsernameToken被发送到服务器。下面的c#示例代码演示了如何做到:

static void Main(string[] args)
        {
            CalculatorServiceWse calc = new CalculatorServiceWse();
            calc.Url = "http://localhost:9080/WSUTSigEncRouterWeb/services/Calculator";
//
            UsernameToken token = new UsernameToken("johndoe", "abc123", 
PasswordOption.SendPlainText);
            calc.SetClientCredential(token);
            calc.SetPolicy("usernameTokenSecurity");
            float result = calc.multiply(7, 5);
            Console.WriteLine("Result = " + result);
            Console.ReadLine();
        }

运行客户端代码就会生成所期望的输出结果:Result = 35.0(下一页)

提示:试试键盘 “← →” 可以实现快速翻页 

一键看全文

本文导航

相关阅读

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑