WebService的几种验证方式
WebService的几种验证方式
1.1????? WebService设计1.1.1?? 传输基本参数1.1.2?? 传输数据集合(1)???? 数组 (2)???? DataSet 1.2????? WebService异常处理1.3????? WebService性能1.4????? WebService认证?请参考WebService认证学习报告 1.4.1?? 各种认证方式1.4.1.1????? Windows认证(1)?? 配置IIS中WebService文件的权限为集成Windows认证 (2)?? 设置Web.Config <authentication mode= "Windows"> </authentication> ? ? 1.4.2?? 跟踪用户访问1.5????? WebService调用1.5.1?? Windows认证(1)?? NT认证使用时,Credentials必须指定System.Net.CredentialCache.DefaultCredentials 当设置为default时,客户端根据服务端配置决定采用NTLM认证还是其他的安全认证 (2)?? 实例化WebService对象 (3)?? 添加WebService认证信息 (4)?? 调用WebService方法 ??????????? LocalTest.GIISService localTest = new LocalTest.GIISService(); ??????????? CredentialCache credentialCache = new CredentialCache(); ??????????? NetworkCredential credentials = new NetworkCredential("XuJian","password","Snda"); ??????????? credentialCache.Add(new Uri("http://localhost/GIIS/ GIISService.asmx"), ??????????????????????????????? "Basic",credentials); ??????????? localTest.Credentials = credentialCache; ??????????? string tt = localTest.Hello("ssssssss"); 1.6????? GIIS中WebService认证实现该部分为本次GIIS中实现的认证方式,考虑到相关配置、维护性,不涉及其他认证方式的处理 1.6.1?? 实现方式?SOAP Header + DES加解密 + Windows认证 1.6.2?? 实现原理(1)?? SOAP Header SOAP包括四个部分: SOAP封装(envelop),定义描述消息 SOAP编码规则 ?????????????????????????????????? SOAP RPC调用和应答协定 ?????????????????????????????????? SOAP绑定,底层协议交换信息 其中envelop由一个或多个Header和一个Body组成,Header元素的每一个子元素称为一个SOAP Header (2)?? DES对称加解密 通过Client端传输过来的已加密编码,在客户端进行解码分析,实现认证,认证的user信息来自于GIIS的系统登录用户列表 对编码和解码的字节类型存储在Web.Config文件中,要保持一致并对称,且字符长度需设为8位 (3)?? 集成Windows认证 作为域用户可以通过该方式来调用、处理WebService,但非域用户看通过我们自定义的SOAP Header方式来验证 1.6.3?? 实现步骤(SOAP)(1)?? 设置.asmx文件的访问权限为“集成Windows认证”,不允许匿名访问 (2)?? 创建WebService认证类CredentialSoapHeader.cs,继承SoapHeader *调用者的信息从系统维护的WscUser表中获取
(3)?? 创建DES加解密类,实现明文编码与解码
? (4)?? 在CredentialSoapHeader类中实现用户认证信息的解码与合法性检查,给出异常时的提示信息 见CredentialSoapHeade的代码 (5)?? 在目标Service类中实例化CredentialSoapHeader对象,并指定该对象为WebService方法的修饰
? 1.6.4?? Client端调用方法(SOAP)(1)?? 添加WebService引用 URL地址为对应的GIIS WebService地址,引用的别名自定义 (2)?? 实例化一个WebService的类对象 LocalService.GIISService localTest = new LocalService.GIISService(); (3)?? 设置Credentials方式 localTest.Credentials = System.Net.CredentialCache.DefaultCredentials; (4)?? 传递编码后的密文 (5)?? 调用WebService提供的方法 (6)?? 实现代码如下:
至此已实现GIIS中的WebService验证,如单独采用Windows认证请参见下面的说明 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |