首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web Service >

wcf的身份验证有关问题

2012-06-15 
wcf的身份验证问题最近遇到wcf的身份验证问题,WCF服务是宿主于IIS中的,之前是使用的基本操作系统的“身份验

wcf的身份验证问题
最近遇到wcf的身份验证问题,WCF服务是宿主于IIS中的,之前是使用的基本操作系统的“身份验证”来验证用户。但是现有客户不提供windows账户给我们,所以我们只能使用自定义用户名密码的方式,研究了两天发现效果没有与windows集成的效果好,也许是自己未搞清楚。下面我描述下的疑惑:

1、使用自定义用户密码方式做身份验证的方式主要派生System.IdentityModel.Selectors.UserNamePasswordValidator以实现验证,有无其他方法,因为在实验时发现无法断点调试?

2、因为客户不提供windows账号给我们,所以WCF站点开启了匿名用户验证,这样wcf的元数据就公开了,之前使用基本身份验证的时候外界访问wcf时会要求输入用户密码,这样在不知道用户密码的前提下无法获得元数据。所以我考虑将元数据请求置为false,以使外界无法获取,配置如下:<serviceMetadata httpGetEnabled="false" httpsGetEnabled="false"/>。这样做不知道是否真能实现我的目的 ?

3、安全主要是靠SSL加密,这种方法貌似只保证点到点安全,但是消息加密需要客户端证书,不知道这点我是否理解有误?


[解决办法]
1.不一定要用UserNamePasswordValidator的,不知道你的WCF有没有开启ASP.NET兼容,如果打开了,那么像ASP.NET一样管理身份验证即可。不要学MSDN上的那个例子。即使那个ASP.NET没有打开兼容,那么你可以使用WCF自带的验证和Session,至于UserNamePasswordValidator,那是可用可不用的。
2.即使开启了一个新的身份验证方式,也没有必要全局都设置成匿名用户验证,你可以再建立一个文件夹,该文件夹下重新设置验证方式,使用这种自定义用户名密码的时候,访问这个文件夹下的接口来登录,这时候不影响原来的逻辑。web.config下的location标签也能实现这个功能。
3.证书加密,加密用私钥,解密用公钥。
完活儿~
我说的不清楚的地方继续你再问………………
[解决办法]
http://msdn.microsoft.com/zh-cn/library/gg185927.aspx
[解决办法]
WCF的ASP.NET兼容
http://technet.microsoft.com/zh-cn/library/ms752234(v=vs.90)

第二点说的是Web.config的管理Scope,每层文件夹都可以有自己的Web.config:继承自webroot的Web.config并且可进行独立设置。

热点排行