首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何配置从.Net 2.0客户端调用WCF服务时的安全性

如何配置从.Net 2.0客户端调用WCF服务时的安全性
EN

Stack Overflow用户
提问于 2008-10-24 04:48:06
回答 5查看 9.2K关注 0票数 15

我已经启动并运行了一个WCF服务,并且能够使用basicHttpBinding在该服务和.Net 2.0客户端之间进行通信。

我现在需要锁定WCF服务,以便它只能由经过身份验证的客户端调用。

我可以控制将调用我的服务的客户端。这些客户端是一个产品的一部分,该产品将安装在野外,并“给家里打电话”,以推送和拉取数据。客户端应用是为.Net 2.0框架编写的,目前无法升级到3.0或3.5。我无法将windows用户帐户添加到客户端计算机。

我有哪些选项来保护WCF服务并能够从我的.Net 2.0客户端进行身份验证?此外,数据还需要通过https传递。

我一直在网上搜索,感觉就像在做一场徒劳无功的追逐。

EN

回答 5

Stack Overflow用户

发布于 2008-10-24 08:31:54

可以将WCF终结点配置为使用双向SSL身份验证。这意味着您可以要求客户端在向服务发出请求时提供确认其身份的X.509证书。

在服务器端,您可以使用WCF中的一个内置验证方案,或者提供您自己的验证逻辑来检查X.509证书。

如果您在IIS中托管您的服务,那么将SSL配置为需要transport-level.中的客户端证书是很容易的。但是,您可以在以下位置找到如何在自托管WCF服务中实现此行为的很好指南:

http://leastprivilege.com/2007/08/25/certificate-based-authentication-and-wcf-message-security/

我自己还没有尝试过这一点,但是,由于这在message-level,上创建了一个安全需求,我认为您将不得不使用wsHttpBinding来在您的WSDL契约中强制执行它,因为强加安全需求来访问web服务是WS-*标准的一部分。

如果您必须使用basicHttpBinding,,您可以尝试此解决方案,它将在传输层上移内容:

http://leastprivilege.com/2007/08/26/certificate-based-authentication-and-wcf-mode-independent/

希望这能有所帮助

票数 10
EN

Stack Overflow用户

发布于 2008-10-24 10:56:24

好的,有了SSL,您就有了传输级别的安全性;这很好,它可以保护消息不被嗅探和更改。

现在您有了选择;您是否需要静默验证,或者是否可以在程序启动时提示用户输入用户名/密码?如果它必须是静默的,那么您可以使用前面提到的客户端证书(尽管这很痛苦,但您需要自己生成证书并对其进行验证,因此您需要考虑运行自己的证书颁发机构)。或者,您可以在包含客户端ID的消息中嵌入一个自定义标头,并以杂乱无章的方式完成此操作。

但是,如果您可以提示输入用户名和密码,那么您可以通过这种方式进行身份验证,并使用custom authenticator或甚至使用ASP.NET membership database将其插入到数据库查找中。

票数 4
EN

Stack Overflow用户

发布于 2009-06-01 20:48:21

这是我最终做的事情,在我们的情况下,这似乎是最简单的解决方案,规模相当小,只公开了少数几个web服务:

  1. 使用安全套接字层保护传输
  2. 客户端首先通过调用web服务上的登录方法登录web服务。如果登录成功,它将向client.
  3. Clients返回一个加密的FormsAuthenticationTicket,然后必须为每个web服务调用提供窗体身份验证票证。每个方法都检查票证是否有效,如果有效,则执行其工作。如果票证已过期或无效,则客户端必须使用re-authenticate.

希望这能帮助一些人..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/232500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档