托管WCF应用程序IIS身份验证

时间:2014-07-27 18:06:18

标签: asp.net wcf authentication iis

我已经编写了一个WCF服务并且需要托管它,我可以在IIS或自我主机中托管,我想通过在下面的web.config文件中设置绑定来使用Windows身份验证:

<bindings>
  <netHttpBinding>
    <binding>
      <security mode="Transport">
        <transport clientCredentialType="Windows" />
      </security>
    </binding>
  </netHttpBinding>
</bindings>

我试图理解IIS在身份验证方面做了什么,并将其传递给Web应用程序,具体来说:

  • 如果我在IIS中托管,是否需要为其启用Windows身份验证 IIS管理设置中的服务站点?

  • 如果是这样,为什么服务不能简单地执行Windows Authentication 从配置文件就像自己的主机 - 为什么IIS需要参与?自我主持人 除了web.config文件之外不需要任何其他内容。

  • 在IIS中是否存在应用程序(ASP MVC,WCF等)的方法 处理身份验证类型(表单,Windows身份验证,基本) 没有启用它们(原因是如果没有配置站点) 正确的,如果代码处理,它可能是一个安全风险 验证然后安全意图变得明确)?

2 个答案:

答案 0 :(得分:3)

  

如果我在IIS中托管,是否需要在IIS管理设置中为服务站点启用Windows身份验证?

  

如果是这样,为什么服务不能像配置文件那样仅通过配置文件执行Windows身份验证 - 为什么IIS需要参与?自托管主机除了web.config文件之外不需要任何其他内容。

因为Windows身份验证是一项功能。安装后,您可以为特定站点或服务启用或禁用此功能。请注意,Windows身份验证不支持WindowsVista®和Windows®7的Home或Starter版本。

IIS WCF主机实现与SelfHost实现完全不同。并且需要Windows身份验证功能来设置安全上下文身份(ServiceSecurityContext.Current.WindowsIdentity)或模拟调用者(http://msdn.microsoft.com/en-us/library/ms788971(v=vs.110).aspx)以在IIS WCF主机上工作。

  

在IIS中是否有办法在应用程序(ASP MVC,WCF等)中处理身份验证类型(表单,Windows身份验证,基本)而不启用它们(原因是如果网站配置不正确,则可能存在安全风险,如果代码处理身份验证,则安全意图变得明确)?

您必须先安装功能才能使用它。没有安全风险,因为它不起作用。例如,如果您将站点或服务配置为使用Windows身份验证,则匿名用户将无法访问此站点或服务。

答案 1 :(得分:1)

查看this 这提供了所有细节,按照这一点,我相信你会得到你想要的。