WCF BasicHttpBing With UserName Authentication

来源:互联网 发布:linux系统crontab 编辑:程序博客网 时间:2024/05/16 03:13

背景:

1. 使用BasicHttpBing的目的是为了适应.net 2.0项目的存在;

2. 为了保证WCF服务的安全以及接口调用的日志记录及统计,需要进行简单的调用者身份验证;

3. 采用Windows Service作为WCF服务的宿主;

 

服务端采用安全模式TransportWithMessageCredential, 代码如下(也可以采用配置方式):

 

<machineName>表示机器名,<domain> 表示服务器所在域的名称,加起来构成完整的计算机名称;Const.HttpsPort 可以随意指定,比如8888;

 

因为安全模式要求SSL,因此我们要将8888端口绑定证书;

需要一个证书,证书名称必须和完整的计算机名称一致,且根证书需要受信任(或者新建或者加入域的服务器本身就有,可以到证书管理中查找--localmachine--》个人--》证书);

绑定操作这里需要借助一个工具httpcfg.exe,如果服务器没有安装此工具,可以到微软官方下载windows 2003 support tools.
可以先查看当前SSL绑定状态,通过如下命令:
cmd - > httpcfg query ssl
绑定方式:
cmd -> httpcfg set ssl /i 0.0.0.0:8200 /h 42e1ecc4968b8ac362f88cc81f07e4dbd9192a93
42e1ecc4968b8ac362f88cc81f07e4dbd9192a93为证书HASH值,这个可以查看证书属性—》微缩图得到,注意中间没有空格!

这样端口就完成SSL绑定。

 

服务地址:https://<完整的计算机名称>:<port>/<ServiceName>

 

客户端就好说了,

.net 2.0及以前版本的系统如何调用:

1.   添加引用Microsoft.Web.Services2(这个DLLWSE2.0中的);

2.   添加web服务引用,https://<完整的计算机名称>:<port>/<ServiceName>

3.   更改自动生成的Reference.cs中的服务代理类的继承类,即将System.Web.Services.Protocols.SoapHttpClientProtocol替换为Microsoft.Web.Services2.WebServicesClientProtocol

注意,重新引用Web服务后,要重新更改!

4.   调用前,需要加入以下代码:

 

其中GUID字符串对应ApplicationID

 

.net 3.0及以后版本的系统如何调用:

1.   添加服务引用,https://<完整的计算机名称>:<port>/<ServiceName>

2.   调用前加入以下代码:

 

 

原创粉丝点击