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认证请参见下面的说明 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- angulajs 中 $scope.$apply方法的作用
- scala – 在Akka微服务架构中共享基于案例类的消息的最佳方
- angularjs – 如何在rxjs Observable中包含angular $http p
- unix – Ant的递归chmod可以与exec在速度方面进行竞争吗?
- 这5篇文章将使你成为一个Angular Change Detection专家。
- scala – 播放应用程序中使用的SBT Coverage“exclude”
- scalaz’Functor如何被赋予具有上下文绑定的更高级别的类型
- 如何在执行shell脚本时关闭echo Linux
- 如何使用Putty以ssh密钥方式登录Linux系统
- 获取Scala特征中的命令行参数