【问题标题】:Authentication settings in IIS Manager versus web.config versus system.serviceModelIIS 管理器中的身份验证设置与 web.config 与 system.serviceModel
【发布时间】:2011-02-04 15:12:33
【问题描述】:

我有一个 WCF Web 服务,我想使用基本身份验证。我迷失在身份验证选项中:

  • 在 IIS 6 管理器中,我可以进入网站的属性并设置身份验证选项。
  • 在网站的 web.config 文件中,system.web 下有一个<authentication mode="Windows"/> 标签
  • 在网站的web.config文件中,system.serviceModel下,我可以配置:

    安全> 绑定>

这三个有什么区别?各自应该如何配置?

一些上下文:我有一个简单的网站项目,其中包含一个 .svc Web 服务,我希望它使用基于 SSL 的基本身份验证。 (另外,我希望它不使用 Windows 帐户,但也许这是另一个问题。)

【问题讨论】:

    标签: wcf authentication .net-3.5 iis-6 web-config


    【解决方案1】:

    前两个实际上是关于访问 IIS6 中的 ASP.NET 虚拟目录或虚拟应用程序 - 这基本上与 WCF 无关(WCF 实际上既不是 ASP.NET 的一部分,也不依赖于 ASP.NET)。这些设置控制进入 IIS6 Web 服务器的 HTTP 请求在身份验证方面的处理方式。这基本上控制了来自互联网的匿名呼叫者是否可以直接呼叫而不进行身份验证,或者他们是否需要输入用户名/密码,或者是否只允许在此域中具有有效 Windows 身份的呼叫者进入。

    这对您的 WCF 服务感兴趣的唯一原因是,当您在 IIS 中托管 WCF 服务(只是众多选项之一)时,您有一个需要驻留在虚拟目录中的 (myservice).svc 文件.当然,对该 SVC 文件的访问是由 IIS6/ASP.NET 的身份验证设置控制的。

    <wsHttpBinding> 部分中的安全模式是 WCF 服务如何与其客户端通信的与安全相关的定义。 Mode=Transport 意味着,您正在保护实际的传输层 - 通常使用 SSL - 而不是单独的每条消息。此设置在所有客户端都位于公司防火墙后的 Intranet 场景中效果很好 - 但在 Internet 场景中效果不佳,因为您无法真正控制客户端(地球上任何地方)的整个链一系列中间跳跃到您的服务器 - 您不能。在这种情况下,您必须使用 Mode=Message,它基本上对通过线路传输的每条消息进行加密和签名 - 它可以在从源点到服务器的过程中通过任意数量的路由器和中继工作。

    【讨论】:

    • 这为我澄清了一些事情。不过,我不确定您的最后一点:我认为 Mode=Transport 表示 SSL,并且 SSL 在 Internet 的路由器上工作得很好。无论如何,我最终关闭了 IIS 和 WCF 身份验证,并使用custombasicauth.codeplex.com 来实现自定义基本身份验证。
    【解决方案2】:

    前两个是相关的,如果不匹配你的服务将无法激活。如果您选择 Windows 身份验证,显然会假设您将绑定到 Windows 域或本地计算机。

    由于您将进行 SSL 基本身份验证,因此您将其设置为 None,然后配置您的传输安全性。

    Your one stop shop for setting up transport + basic authentication

    MSDN Article on Transport+Username + Windows Forms

    我不确定你是否还在计划如何做安全,但我建议考虑使用消息安全与传输(个人对消息安全的偏见)..

    Transport vs Message Comparison

    Patterns & Practices on Message and Transport Security

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      • 2019-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多