有效的使用WSE(学习+实践)

学习网上好多的贴子例如:RicCC,采用证书方式,大约2天时间未果,后请教队长,学到了一个简单而有交的方式。
1、服务器端:
     1)新建WebService;
     2)添加MyUsernameTokenManager,MySoapHeader
      
MySoapHeader
     
public class MyUsernameTokenManager : UsernameTokenManager
{
    
public MyUsernameTokenManager()
    
{
        
//
        
// TODO: 在此处添加构造函数逻辑
        
//
    }


    
/// <summary>
    
/// 对WebService调用过程中传递的UsernameToken进行验证
    
/// </summary>
    
/// <param name="token">UsernameToken</param>
    
/// <returns>此UsernameToken所标识用户的真实密码</returns>

    protected override string AuthenticateToken(UsernameToken token)
    
{
        
if (token == null)
        
{
            
throw new ArgumentNullException();
        }

        
switch(token.Username)
        
{
            
case "WseClientUseradmin":
                
{
                    
return "EDFxfkY12sn6Oh52wGuR9g==admin";
                }

            
case "WseClientUserclient":
                
{
                    
return "EDFxfkY12sn6Oh52wGuR9g=client";
                }

            
default:
                
{
                    
return "EDFxfkY12sn6Oh52wGuR9g==admin";
                }

        }

    }

}
     3) 设置WebService属性 [Policy("ServerSidePolicy")]
     4)设置WES属性 General 页中两项全选
           Security页中添加 SecurityTokensManagers
           Type 修改如下 MyUsernameTokenManager(类名), App_Code(程序集名)
    5) Policy页选中 Enable Policy,添加ServerSidePolicy:Secure a service application \ Username;PerformAuthorization 不选;EnableWS-Security1。1 Extensions, ProtectionOrder 选None(rely on transport protection);完成即可。
                                     

2、客户端:
    1)新加客户端。
    2)设置WSE 3。0:General页选中第一项;Policy页选中Enable Policy,添加EditApplicatioPolicy:ClientSidePolicy,Secure a client application ,username;SpecifyUsername Token in code;EnableWS-Sercurity1。1 Extensions ,ProtectionOrder:None;完成即可。
   3)引用WebService。
   4)
 localhost.ServiceWse svc = new localhost.ServiceWse();
            
string username = "用户名";
            
string password = "密码";
            UsernameToken token 
= new UsernameToken(username, password);

            svc.SetClientCredential
<UsernameToken>(token);
            svc.SetPolicy(
"ClientSidePolicy");
            MessageBox.Show(svc.HelloWorld());


写的真乱,自己都看不懂,没时间,先这样吧,想起来了再详细修改修改。

RicCC (虽然按照他的例子我也没做成功),向Teamleader学习。
谦虚使用进步。
posted @ 2007-03-30 15:11  禹过天晴  阅读(815)  评论(0编辑  收藏  举报