WCF从Message更改为Transport安全性

时间:2016-05-04 08:23:02

标签: web-services wcf security soapui wcf-security

目前我们的服务使用消息级安全性,但我们正在使用Soap UI进行测试。经过几个小时,我们发现Soap UI对Message级别的安全性不好,我认为这与java核心有关。

尝试解开web.config以使用传输级安全性,我相信Soap UI支持这种安全性,但是一旦我将安全模式更改为Transport,我就会收到以下错误:

Could not find a base address that matches scheme https for the endpoint with binding WSHttpBinding. Registered base address schemes are [http].

有人可以查看配置,因为我确信我错过了一些东西。

<system.serviceModel>
<services>
  <service name="MyService" 
           behaviorConfiguration="ServiceBehavior">
    <endpoint address="" 
              binding="wsHttpBinding" 
              bindingConfiguration="ServiceWsHttpBinding" 
              name="ClaimServiceHttpEndpoint" 
              contract="IMyService" />
    <endpoint address="mex" 
              binding="mexHttpBinding" 
              contract="IMetadataExchange" />
  </service>
</services>
<bindings>
  <wsHttpBinding>
    <binding name="ServiceWsHttpBinding" 
             maxBufferPoolSize="2147483647" 
             maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="2000000" 
                    maxStringContentLength="2147483647" 
                    maxArrayLength="2147483647" 
                    maxBytesPerRead="2147483647" 
                    maxNameTableCharCount="2147483647" />
      <security mode="Message">
        <message clientCredentialType="UserName" 
                 negotiateServiceCredential="false" 
                 establishSecurityContext="false" />
      </security>
    </binding>
  </wsHttpBinding>
</bindings>
<behaviors>
  <endpointBehaviors>
    <behavior name="ClientEndpointBehavior">
      <clientCredentials>
        <serviceCertificate>
          <authentication certificateValidationMode="None" />
        </serviceCertificate>
      </clientCredentials>
    </behavior>        
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
      <serviceDebug includeExceptionDetailInFaults="true" />
      <serviceCredentials>
        <serviceCertificate findValue="CN=test.service.com" 
                            storeLocation="LocalMachine" 
                            storeName="My" 
                            x509FindType="FindBySubjectDistinguishedName" />
        <userNameAuthentication userNamePasswordValidationMode="Custom" 
                                customUserNamePasswordValidatorType="MyObject.UserAuthentication,  MyObject.Utils" />
      </serviceCredentials>
      <serviceAuthorization principalPermissionMode="Custom">
        <authorizationPolicies>
          <add policyType="MyObject.Utils.AuthPolicy, Myobject.Utils" />
        </authorizationPolicies>
      </serviceAuthorization>
    </behavior>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />        
    </behavior>
  </serviceBehaviors>
</behaviors>
<protocolMapping>
  <add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

0 个答案:

没有答案