【问题标题】:WCF Security - Https and Anonymous AuthenticationWCF 安全性 - Https 和匿名身份验证
【发布时间】:2012-02-17 10:46:26
【问题描述】:

我们有一个服务当前正在使用 basicHttpBinding。我们可以灵活地将其转换为 netTCPBinding。在 IIS 7 中部署它时,我们使用匿名身份验证。该服务由托管在同一网络中的 IIS 中的网站访问。

我们的客户提出了对匿名身份验证的担忧,他不希望不受欢迎的用户(在办公室网络中)使用它。关键是人们可以创建自己的示例网站并使用该服务。

假设我使用 Transport Credential Type 作为“Certificate”,它会满足我的要求吗?即,只有拥有客户端证书的用户才能访问该服务?你能告诉我任何解释如何实现它的文章吗?

<endpoint address=""
binding="basicHttpBinding"

我已经提到了以下内容 http://msdn.microsoft.com/en-us/library/ms731092.aspx

注意:IIS中的消费网站使用Windows Authentication: Enabled, ASP.NET impersonation: Enabled

谢谢

【问题讨论】:

    标签: c# asp.net .net wcf https


    【解决方案1】:

    我的建议是转换为 netTCP 并使用证书身份验证。仅与访问 Web 服务的网站共享证书。下面的链接将帮助您在 WCF 中实现证书安全

    http://www.codeproject.com/Articles/36683/9-simple-steps-to-enable-X-509-certificates-on-WCF

    【讨论】:

    • 所以你是说带有证书的 https 会满足要求,不是吗?
    • 否。我建议使用带有证书的 netTCP,因为您的消费者是一个 .net 网站。如果您使用 https,我认为任何人都可以点击该 url 并下载证书。
    • 假设我使用传输凭证类型作为“证书”,它会满足我的要求吗?即只有拥有客户端证书的用户才能访问服务?
    • 是的,客户端证书可用于 HTTPS 和 TCP。 IIS 中有额外的配置需要客户端证书。
    【解决方案2】:

    最简单的解决方案是使用Http Headers,并在客户端发出请求时在标头中放置一些身份验证密钥。在服务器上检查 auth 密钥的请求标头。如果未找到密钥,则故障服务。查看this 帖子,该帖子解释了如何在创建服务代理时添加标头。

    建议

    您可以删除元数据端点(mex),将httpGetEnabled 设置为false,这样就没有人可以创建服务的代理了。

    希望对你有所帮助。

    【讨论】:

    • 尝试将安全模式更改为在配置中传输。检查this。通过制作https,您可以保护传输层。我想这应该适合你。
    • 即使我们使传输层安全,同一个网络中的未注册人也可以使用它,对吧?
    • 是的,但如果他们有服务代理。你可以试试Message Securitycertificate。检查msdn.microsoft.com/en-us/library/ms731884.aspxmsdn.microsoft.com/en-us/library/ms731925.aspx。在这种情况下,不受欢迎的人可以点击服务,但他们的呼叫将失败。
    • 任何带有证书的安全性。如果选择transport,则需要在https 上托管服务。消息和传输的区别在于,在消息中保护数据而不是连接,在传输中保护连接而不是数据。
    猜你喜欢
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2010-09-17
    • 1970-01-01
    相关资源
    最近更新 更多