代码之家  ›  专栏  ›  技术社区  ›  ng5000

如何为具有HTTPS端点的WCF服务生成客户端代理?

  •  3
  • ng5000  · 技术社区  · 16 年前

    可能与前面的问题相同: WCF Proxy 但不确定…

    我有一个配置为使用传输安全性的HTTPS服务,我希望还有Windows凭据。服务只能在内部访问(即在内部网中)。配置如下:

    <configuration>
      <system.serviceModel>
        <services>
          <service name="WCFTest.CalculatorService" behaviorConfiguration="WCFTest.CalculatorBehavior">
            <host>
              <baseAddresses>
                <add baseAddress = "https://localhost:8000/WCFTest/CalculatorService/" />
              </baseAddresses>
            </host>
            <endpoint address ="basicHttpEP" binding="basicHttpBinding" contract="WCFTest.ICalculatorService" bindingConfiguration="basicHttpBindingConfig"/>    
            <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
          </service>
        </services>
        <bindings>
          <basicHttpBinding>
            <binding name="basicHttpBindingConfig">
              <security mode="Transport">
                <transport clientCredentialType = "Windows"/>
              </security>
            </binding>
          </basicHttpBinding>
        </bindings>
        <behaviors>
          <serviceBehaviors>
            <behavior name="WCFTest.CalculatorBehavior">          
              <serviceAuthorization impersonateCallerForAllOperations="false"  principalPermissionMode="UseWindowsGroups" />
              <serviceCredentials >
                <windowsAuthentication allowAnonymousLogons="false" includeWindowsGroups="true" />
              </serviceCredentials>
              <serviceMetadata httpsGetEnabled="True"/>
              <serviceDebug includeExceptionDetailInFaults="False" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
    </configuration>
    

    当我运行该服务时,在IE中看不到该服务。我得到一个“无法显示此页面”错误。如果我尝试通过“添加服务引用”向导在VS2008中创建客户机,我会得到以下错误:

    下载时出错 ’ https://localhost:8000/WCFTest/CalculatorService/ '. 下载时出错 ’ https://localhost:8000/wcftest/calculatorservice/ '. 基础连接已关闭: 在上发生意外错误 发送。身份验证失败,因为 远程方已关闭 传输流。元数据包含 无法解析的引用: ’ https://localhost:8000/wcftest/calculatorservice/ '. 在创建 HTTP请求 https://localhost:8000/wcftest/calculatorservice/ . 这可能是由于 未配置服务器证书 正确使用https中的http.sys 案例。这也可能是由于 安全绑定不匹配 在客户机和服务器之间。这个 基础连接已关闭:一个 发送时发生意外错误。 身份验证失败,因为 远程方已关闭传输 溪流。如果在中定义了服务 当前的解决方案,尝试构建 解决方案和添加服务 再次引用。

    我想我这里缺少一些基础知识。我需要设置一些证书吗?还是应该像使用nettcpbinding时那样工作?

    谢谢

    3 回复  |  直到 15 年前
        1
  •  -1
  •   Pau    16 年前

    变化

    <endpoint address ="basicHttpEP" binding="basicHttpBinding" contract="WCFTest.ICalculatorService" bindingConfiguration="basicHttpBindingConfig"/>
    

    <endpoint address ="basicHttpEP" binding="basicHttpsBinding" contract="WCFTest.ICalculatorService" bindingConfiguration="basicHttpBindingConfig"/>
    
        2
  •  0
  •   Bryan Corazza    16 年前

    NG5000

    似乎您可能还有其他问题(可能是IIS)。你对交通安全有什么问题吗?我也会确保在检查WCF之前,你可以访问IE中的网址。听起来像是“安全”选项卡中的IIS设置不正确。

    如果仍然存在问题,请尝试在关闭传输级安全性的情况下构建代理,然后返回并将两个配置都更改为传输级Windows安全性,然后查看会发生什么。

    -布莱恩

        3
  •  0
  •   bird    15 年前
    ...
    <security defaultAlgorithmSuite="Default" authenticationMode="IssuedTokenOverTransport"
                        requireDerivedKeys="false" securityHeaderLayout="Strict" includeTimestamp="true"
                        keyEntropyMode="CombinedEntropy" messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
                        <issuedTokenParameters keyType="SymmetricKey" tokenType="" />
    ...
    

    这是我的解决方法。我得到了上面的配置文件,并将authenticationmode从“issuedtokenovertransport”更改为“username overtransport”。它解决了我的环境问题。