WSE3.0构建Web服务安全(3):WSE3.0策略配置、证书、签名、与实例开发
另外WSE 3.0也提供了其他的一些特性,例如多宿主托管Web服务、用户自定义的安全断言、对消息传输优化机制MTOM的支持、使用TCP传输控制协议传递SOAP消息等。我们也可以根据实际的系统需求来利用WSE 3.0提供的新特性,优化我们的系统。第一节中我们也提到在 Web Serivice项目中启用 WSE 3.0 的一个重要原因,就是要利用它的策略管道扩展性模型。因为WSEWSE 3.0 使您能够插入对进入和离开终结点的 SOAP 消息执行预处理和后续处理的筛选器,它提供的功能可以创建能够与WSEWSE 3.0 提供的现有声明性安全策略相结合的自定义声明性策略。下面我们来介绍一下WSE3.0配置工具,以及如何配置安全策略。
<webServices>
<soapServerProtocolFactory type="Microsoft.Web.Services3.WseProtocolFactory, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</webServices>
</system.web>
<securityTokenManager>
<add type="MyUsernameTokenManager.MyUsernameTokenManager, UsernameTokenManagerClassLib" namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" localName="UsernameToken" />
</securityTokenManager>
</security>
B.Username 需要包含用户名和密码的Usernametoken的安全令牌。
C.Certificate 需要提供服务端认证的X.509证书。
D.Windows 需要提供服务端认证的KerberosT令牌,此方式不属于WS-*安全协议的范畴,使用Windows Kerberos 认证机制。
B.Sign-Only :客户端需要对SOAP消息签名。保证消息的唯一性。
C.Sign and Encrypt:WSE对SOAP消息签名,且对SOAP消息体加密,来保证消息安全。
D.Sign, Encrypt, Encrypt Signature:WSE对 SOAP消息必须签名、消息体签名加密 、对签名进行加密。
<usernameOverTransportSecurity />
<requireActionHeader />
</policy>
<ttlInSeconds value="30" />
</tokenIssuer>
<trace enabled="true" input="InputTrace.webinfo" output="OutputTrace.webinfo" />
<detailedErrors enabled="true" />
</diagnostics>
<mtom clientMode="On" serverMode="always" />
</messaging>
<usernameOverTransportSecurity />
<requireActionHeader />
</policy>
[Microsoft.Web.Services3.Policy("ServerPolicy")]
public class Service : System.Web.Services.WebService
{
public Service () {
//Uncomment the following line if using designed components
//InitializeComponent();
}
[WebMethod]
public string HelloWorld()
{
return "Hello Guys, Frank Xu Lei.is testing WSE3.0 Setting Policy";
}
}
<usernameOverTransportSecurity />
<requireActionHeader />
</policy>
// 创建Web service proxy的实例
ServiceWse serviceProxy = new ServiceWse();
//通过UsernameToken类的实例添加用户名与口令。
UsernameToken token = new UsernameToken("FrankXu", "123456789", PasswordOption.SendPlainText);
//MessageSignature _messageSignature = new MessageSignature(token);
//_messageSignature.SigningKey
// 设置用户令牌到服务代理
serviceProxy.SetClientCredential(token);
// 代理设置策略
serviceProxy.SetPolicy("ClientPolicy");
//调用服务方法
string result = serviceProxy.HelloWorld();
try
{
Console.WriteLine(result);//打印结果
Console.WriteLine("Calling {0}", result);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
//释放对象资源
if(serviceProxy != null)
serviceProxy.Dispose();
// Success!
Console.WriteLine("Web Service called successfully");
//For debug
Console.WriteLine("Press any key to continue");
Console.ReadLine();
这个表示服务端和客户端使用了相同的安全策略。客户端按照策略把用户名和密码封装到UsernameToken里,添加到Soap消息里,发送给服务端。服务端根据策略解析Soap消。反序列化UsernameToken。然后进行用户名和密码的安全验证。
UsernameForCertificateAssertion assertion = new UsernameForCertificateAssertion();
assertion.X509TokenProvider = new X509TokenProvider(StoreLocation.CurrentUser,
StoreName.AddressBook,
"CN=WSE2QuickStartServer",//证书
X509FindType.FindBySubjectDistinguishedName);
//设置签名选项。
assertion.Protection.Request.SignatureOptions = SignatureOptions.IncludeAddressing |
SignatureOptions.IncludeTimestamp |
SignatureOptions.IncludeSoapBody;
//加密消息主体
assertion.Protection.Request.EncryptBody = true;
转载于:https://blog.51cto.com/frankxulei/320501
WSE3.0构建Web服务安全(3):WSE3.0策略配置、证书、签名、与实例开发相关推荐
- WSE3.0构建Web服务安全(4):MTOM消息传输优化和文件上传、下载
MTOM消息优化传输机制主要应用于大量数据的传输,很多文章中也直接得出结论:使用MTOM文件传输效率高.为什么MTOM的数据传输效率会比别的方式要高?MTOM真的如此完美吗,它有什么不足?什么情况下使 ...
- php构建soap_使用PHP构建Web服务
php构建soap 在你开始前 关于本教程 本教程适用于希望通过在PHP中创建Web服务来跳入Web服务潮流PHP程序员. 您将通过使用PHP构建SOAP服务器来构建Web服务. 您将创建的Web服务 ...
- 利用 Celery 构建 Web 服务的后台任务调度模块
来源:http://www.tuicool.com/articles/Enaeymm 任务队列在 Web 服务里的应用 在 Web2.0 后的时代,社交网站.搜索引擎的的迅猛发展对 Web 服务的后台 ...
- 使用 Ajax 调用 SOAP Web 服务,第 1 部分: 构建 Web 服务客户机
James Snell (jasnell@us.ibm.com), 软件工程师,新兴技术, IBM James Snell 是 IBM 的 software group 中的 emerging Int ...
- Spring Cloud构建微服务架构(四)分布式配置中心
Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持.配置服务器为各应用的所有环境提供了一个中心化的外部配置.它实现了对服务端和客户端对Spring Environm ...
- android 8.0手机开服务端,Android 8.0 + Service开启方式兼容处理
Android 8.0 + ,对后台服务进行了限制了.如果依然采用之前startService()方式. 会导致问题. 前后台服务的一些区别: 有人可能会问,后台服务我们可以自己创建 ONGOING ...
- iis7.0官方下载 IIS 7.0(微软Web服务器组件IIS 7.0) 官方(windows 2003,XP,2000)
iis7.0官方安装包下载 iis7时微软为新一代web服务器开发的服务器软件,安全性较iis5\iis6都有所提高,现在很多网友在找iis7完整安装包下载地址,其实 只要你安装的是win7或者vis ...
- GoLang—使用net/http构建Web服务(文件数据存储)(上)
数据存储可以分为三大类:文件存储.关系型的数据库(SQL)和非关系型的数据库(NoSQL).本文主要讲述文件存储的实现方式. 文件存储根据不同的文件实现不同的存储方式:普通文件(如txt读写).CSV ...
- freebsd 手工安装zabbix2.0 php,zabbix 服务端,子客户端安装配置日志
针对已经有mysql nginx php 的linux环境 ,zabbix2.4.8对不同版本的mysql会报不同的错,php也一样. 这只是针对本人的环境下的安装部署,mysql是5.6.4rmp安 ...
最新文章
- LeetCode Longest Absolute File Path(栈和前缀和解法)
- PCL点云曲面重采样三种方法:上采样,下采样,均匀采样
- messenger android 4.,AndroidIPC机制(4)-Messenger
- openstack添加热添加硬盘并识别
- 即将发版!Apache Flink 1.9 版本有哪些新特性?
- 学术 | 不爱科研,只为当大学老师而读博,这种做法对吗?
- Atitit 提升团队开发效率项目进度的一些大的流程方向attilax总结
- Atitit 数据库的事件机制--触发器与定时任务attilax总结
- mysql 2008 教程_sql 2008 视频教程数据库从入门到精通自学视频教程_IT教程网
- amesim子模型_为什么amesim模型建立后有的元件没有可用的子模型
- [虾神GIS制图课堂]四色地图配色法
- 基于Flask的视频网站设计与实现(Python电影视频推荐系统)
- Label的常用属性设置和使用
- python用matplotlib作图时,x轴为时间轴,如何让x轴每隔几个点显示一次?
- 超直线能否用于真实物理空间?
- 01、功率放大器设计——MRF8P9040N
- React 下一代数据流 hox vs Recoil 使用对比分析
- 使用OmicShare Tools做权重网络图
- html图片自动适应窗口大小,使用CSS自动调整浏览器大小的图片大小
- CAN总线之通俗易懂----工业连接器
热门文章
- Kafka项目实战-用户日志上报实时统计之编码实践
- Canvas、Paint、Path
- 安装好android的adt以后重启eclipse,但是没有创建AVD的图标
- MVC中HtmlHelper用法大全
- Oracle数据库常用的脚本命令(一)
- UWP 查找模板中的控件
- ubuntu16.04装机:网易云+搜狗拼音+chrome+uGet+caffe(openCV3.1+CUDA+cuDNN+python)
- 阿里云OSS存储开发
- 【计算机视觉】森林火灾检测-1
- SharePoint 2010开发实例精选——“每日一句”WebPart