没有合适的资源?快使用搜索试试~ 我知道了~
wcf 安全配置服务契约

温馨提示


试读
22页
WCF可以使用自定的义的用户名密码方式限制对服务的访问和加密,有可能存在这样一种情况,比如一个协定中存在多个操作,即一个服务契约中包含多个操作契约,如果我们还希望在同一用户访问当前服务契约的时候,更进一步,可以让我们做到对不同的用户授予不同的操作契约的访问,直白一点,比如有两个用户admin、admin2,admin可以访问服务契约中的两个操作契约,但是admin2只能访问其中一个,本示例将实现这种需求,在以下的示例中,服务:IUserData 中包含三个操作契约,我们将对admin、admin2 这两个用户授予不同的操作契约的访问权限,在客户使用不同的用户调用服务后,服务器将打印当前的请求服务的用户、请求的资源、服务器对声明的检查、检查结果等数据。
资源推荐
资源详情
资源评论

本节介绍的内容主要是:主要是传输安全模式的 Windows 身份验证方式,基于
NetTcpBinding 绑定协议的实现过程。
为什么此安全方式不需要配置证书,他与自定义验证方式的 Windows 验证有什么不同?
本文都会介绍。以下是本节主要内容:Windows 身份验证基本概念,然后 WCF
传输安全
模式之 Windows 身份验证、服务端配置、客户端配置、总结。
此节内容因为是在 WCF
分布式安全开发实践 (2): 传输安全模式之基本身份验证
( Windows
账户密码) :Transport_Basic_WSHttpBinding 。我们在传输安全模式下页提供
了提供了用户自定义对客户端凭据的验证代码。与消息安全不同的是,这里我们要借助
SSL 来保证数据交互的安全。首先我们来介绍一下什么是传输安全模式的自定义
UserNamePassword。
【1】Windows 域验证:
我们这里先介绍 Windows 验证的基础概念。 Kerberos V5 和域控制器 Kerberos V5 服
务安装在每个域控制器上,而 Kerberos V5 客户机则安装在每个 Windows Server 2003 工
作站和服务器上。
Windows Server 2003 系统使用域名服务(DNS)查询定位最近的可用域控制器。该域控制
器则会在用户登录期间对该用户起首选 KDC 的作用。如果首选 KDC 失效,则 Windows
2003 Server 系统将确定由另一个 KDC 提供验证。
Kerberos V5 验证过程是按以下步骤工作的:
(1) 客户机中的用户,使用口令或智能卡向 KDC(Key Distribution Center)发出验证请求。
(2) KDC 向客户机发出一个特别的授权票证(Ticket Granting Ticket,简称 TGT)。客户机系
统使用该 TGT 访问售票服务(Ticket Granting Service,简称 TGS),它是域控制器中
Kerberos V5 验证机制的一部分。
(3) 然后,TGS 向客户机发布一个服务票证(Service Ticket),客户机使用服务票证来请求
网络服务。服务票证用来证明服务和用户的身份。
【2】传输安全模式之 Windows 身份验证:
传输安全模式之 Windows 身份验证需要服务器不需要一个服务器提供有效的可用于安
全套接字层 (SSL) 的 X.509 证书。 这里使用 Tcp 协议来保证数据传输安全。客户端提供
有效的 Windows 用户名和密码。验证有域服务器完成。
1.身份验证(服务器):不需要提供证书,Windows 集成身份验证
2.身份验证(客户端):Windows 集成身份验证
3.绑定协议:TCP

WCF 传输安全模式身之 Windows 身份份验证的架构如下:
【3】服务端配置:
我们就要对 WCF 服务端进行配置,直接使用配置文件,这里简单。也可以使用代码来
完成。
(1)服务类定义:
这里服务类就一个方法就是更具用户的 name 来打印调用时间,代码如下:
//1.服务契约
[ServiceContract(Namespace="http://www.cnblogs.com/frank_xl/")]
publicinterfaceIWCFService
{
//操作契约
[OperationContract]
stringSayHello(stringname);
}
//2.服务类,继承接口。实现服务契约定义的操作
publicclassWCFService:IWCFService
{
//实现接口定义的方法
publicstringSayHello(stringname)
{
Console.WriteLine("Hello!{0},Callingat{1}",name,DateTime.Now.ToLongTimeString());
return"Hello!"+name;
}
}
(2)传输安全模式配置:
使用传输安全模式,采用客户端 Windows 身份验证策略,transport 安全模式下,
netTcpBinding 绑定默认使用的 Windows 方式,而且启用签名和加密特性。配置信息如下:

<netTcpBinding>
<bindingname="BindingConfigration">
<securitymode="Transport">
<transportclientCredentialType="Windows"/>
</security>
</binding>
</netTcpBinding>
这个这里不适用配置也会生效,等价于以下设置
<netTcpBinding>
<bindingname="BindingConfigration">
<securitymode="Transport">
<transportclientCredentialType="Windows"protectionLevel="EncryptAndSign"/>
</security>
</binding>
</netTcpBinding>
基于 netTcpBinding 来实现传输安全模式下的 Windows 身份验证好处就在这里,可以直
接使用其提供的加密和签名功能。
【4】客户端配置:
这个过程和之前的传输安全模式下,添加服务的过程一样。直接引用。
(1)引用元数据:
因为服务的元数据交换节点启用了 TCP 协议,我们在客户端项目添加元数据地址
net.tcp://localhost:9003/mex
查找服务信息,如图:

这个证明我们的服务端证书设置已经起作用,而且是可信的。现在我们点击 Yes。继续
就会添加完毕服务引用。过程和普通的添加服务元数据引用一样,会产生客户端相关代码
文件。输入 NameSpace,等待完成即可。
(2)配置文件:
客户端配置文件使用默认设置,主要是安全模式的设置要如下,与服务端匹配。使用
Basic 方式。这样我们才能提供自定义用户名和密码。
(3)测试代码:
等待代码生成结束,我们这里就直接生成客户端代理类的实例来调用服务进行测试。这
里客户端在调用服务以前,通道客户端服务代理类的
ClientCredentials.Windows.ClientCredentia 属性设置 Windows 用户名和密码。如下:
////HTTPWSHttpBinding_IWCFService1
WCFClient.ClientProxy.WCFServiceClientwcfServiceProxy=newWCFClient.ClientProxy.WCF
ServiceClient("NetTcpBinding_IWCFService");
//通过代理调用 SayHello 服务
stringsName="FrankXuLeiTransportWindowsNetTcpBinding";
stringsResult=string.Empty;
//设置 Windows 域账号密码
wcfServiceProxy.ClientCredentials.Windows.ClientCredential.UserName="FrankXuLei";
wcfServiceProxy.ClientCredentials.Windows.ClientCredential.Password="12345678";
wcfServiceProxy.ClientCredentials.Windows.ClientCredential.Domain="mydomain";
sResult=wcfServiceProxy.SayHello(sName);
Console.WriteLine("ReturnedResultis{0}",sResult);

//ForDebug
Console.WriteLine("Pressanykeytoexit");
Console.Read();
也可以通过代码设置:
ChannelFactory<IMySecureService> factory = new
ChannelFactory<IMySecureService>( );
// Transport 安全模式之 Windows 身份验证
factory.Credentials.Windows.ClientCredential = new
NetworkCredential("FrankXuLei", "12345678", "mydomain");
(4)测试结果:
启动宿主程序,然后启动客户端程序。宿主打印的消息,当我们 Windows 用户名和密
码的时候,客户端成功调用服务,如图:
【5】总结
Windows Communication Foundation (WCF) 服务和客户端。服务器不需要 X.509 证
书,
(1) 此处自是在借助传输安全 Windows 集成身份验证,需要 Windows 域服务器支持。
(2)此方式该应用程序部署在具有 Kerberos 控制器保护的域中。
(3)Windows 集成身份验证,负责提供的是身份验证。而安全由 TCP 传输来实现,我
可以再传输安全配置里设置,启用特定的保护级别。
(4)transport 在 NetTcpBinding 绑定下,默认客户端身份验证使用 Windows 身份验证。
默认的保护级别是加密并且签名 EncryptAndSign。
我们认为 WCF 可以使用自定的义的用户名密码方式限制对服务的访问和加密,有可能存
在这样一种情况,比如一个协定中存在多个操作,即一个服务契约中包含多个操作契约,
如果我们还希望在同一用户访问当前服务契约的时候,更进一步,可以让我们做到对不同
的用户授予不同的操作契约的访问,直白一点,比如有两个用户
剩余21页未读,继续阅读
资源评论

- 色眯眯的绵羊2020-02-18不错,下载使用了

wqy2008
- 粉丝: 0
- 资源: 23
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 小型GPT模型:用300行PyTorch代码实现的小型GPT语言模型库
- ChartGPT工具:个增强视觉语言理解的工具,基于先进的大型语言模型
- 基于Spring、SpringMVC、MyBatis的在线云音乐网站,java项目 eclipse和idea都能打开运行 推
- qt项目:简单字处理软件
- 基于Prism7+Prism Unity RestSharp字体图标 动态主题文件xaml加载,搭建的一个WPF框架
- 双语对话模型:双语对话语言模型,一个基于大型预训练语言模型 GPT 的对话生成模型,用 GPT-2 进行微调,支持中文和英文
- word下相关操作的图标
- 基于51单片机的矿用瓦斯检测报警器-硬件设计本科毕业设计论文
- 2016腾讯移动游戏质量标准
- postgresql一直使用的稳定版
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
