WCF说我的设置需要“匿名”身份验证 - 但我不想要它们

时间:2011-12-21 14:17:25

标签: .net wcf authentication

所以this question与我的问题有完全相同的症状。

  

此服务的安全设置需要“匿名”身份验证,但不会为承载此服务的IIS应用程序启用此功能。

但是,我已经从我的网络配置中删除了mex端点,但我仍然遇到同样的错误。我的网络配置如下所示:

<system.serviceModel>
<services>
  <service name="xxx.MessageHub.MessageHubService"
           behaviorConfiguration="default">
    <endpoint binding="wsHttpBinding"
              contract="xxx.MessageHub.IMessageHubService" />
  </service>
</services>
    <behaviors>
  <endpointBehaviors>
  </endpointBehaviors>
        <serviceBehaviors>
            <behavior name="default">
                <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
                <serviceMetadata httpGetEnabled="true"/>
                <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
                <serviceDebug includeExceptionDetailInFaults="true"/>
      <serviceAuthorization principalPermissionMode="UseWindowsGroups" />
            </behavior>

        </serviceBehaviors>
    </behaviors>
    <bindings>
        <basicHttpBinding>
            <binding name="credsOnly">
                <security mode="TransportCredentialOnly">
                    <transport clientCredentialType="Windows"></transport>
                </security>
            </binding>
        </basicHttpBinding>
        <wsHttpBinding>
            <binding name="transport">
                <security mode="Transport">
                    <transport clientCredentialType="Windows"></transport>
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
</system.serviceModel>

我正在运行IIS7上兼容IIS6的应用程序(因为我们的prod服务器运行IIS6 - 我在部署到测试服务器时得到了相同的异常)。

我需要修改哪些设置才能使这些内容有效?

1 个答案:

答案 0 :(得分:0)

我可以按照此msdn post上的步骤进行修复,稍加修改:

  1. 右键单击WCF服务的Web.config文件,然后单击编辑WCF配置
  2. 在配置编辑器的“配置”部分中,选择绑定文件夹。
  3. 在“绑定”部分中,选择新建绑定配置
  4. 在“创建新绑定”对话框中,选择 wsHttpBinding 。 单击“确定”。
  5. 将绑定配置的名称设置为某个逻辑且可识别的名称;例如, WsHttpEndpointBinding
  6. 点击安全标签。
  7. 从下拉菜单中选择此选项,将模式属性设置为传输
  8. 从下拉列表中选择此选项,将 TransportClientCredentialType 设置为 Ntlm

  9. 配置部分中,选择 WsHttpEndpoint
  10. 通过从下拉列表中选择此选项,将BindingConfiguration属性设置为 WsHttpEndpointBinding 。 这会将绑定配置设置与绑定相关联。

  11. 在配置编辑器的“文件”菜单上,单击“保存”。

  12. 并且(据我所知)这提供了使用集成身份验证的身份验证(但不是Windows集成)。