2 Stimmen

WebHttpBinding Sicherheitsfrage

Ich habe einen RESTful-Dienst erstellt und die Authentifizierung implementiert. Er akzeptiert Benutzernamen und Passwort und gewährt dann Zugriff auf den angeforderten Dienst. Das funktioniert gut. Jetzt möchte ich SSL auf meinem Dienst verwenden. Dafür habe ich ein Zertifikat erstellt und dann im IIS die erforderlichen Einstellungen vorgenommen. Aber mein Dienst funktioniert nicht. Ich bin mit webHttpBinding.

meine Web.Config auf der Dienstseite ist :

 <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
    <service  behaviorConfiguration="ServiceBehavior" name="TestAPI">
      <host>
        <baseAddresses>
          <add baseAddress="https://localhost/AuthWithSSLTest/API/TestAPI.svc" />
        </baseAddresses>
      </host>
    <endpoint address="" behaviorConfiguration="RESTFriendly" bindingConfiguration="MywebHttpBinding"  binding="webHttpBinding" contract="ITestAPI" >
      </endpoint>
      <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
  </service>
</services>
<client /><bindings>
  <webHttpBinding>
    <binding name="MywebHttpBinding">
      <security mode="Transport" >
       <transport clientCredentialType="Certificate"/>
      </security> 
    </binding>
  </webHttpBinding>     
</bindings>
<behaviors>
  <endpointBehaviors>
    <behavior name="RESTFriendly">
      <webHttp />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior">
      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
      <serviceCredentials>
        <clientCertificate>
          <authentication revocationMode="NoCheck" />
        </clientCertificate>
        <serviceCertificate findValue="CN=tempCertClient" />
      </serviceCredentials>
    </behavior>
  </serviceBehaviors>
</behaviors>

Und in meiner clientseitigen app.config habe ich

<system.serviceModel>
    <behaviors>
        <endpointBehaviors>
            <behavior name="NewBehavior">
                <clientCredentials>
                    <clientCertificate findValue="CN=tempCertClient" storeLocation="LocalMachine" />
                    <serviceCertificate>
                        <authentication certificateValidationMode="PeerTrust" revocationMode="NoCheck" />
                    </serviceCertificate>
                </clientCredentials>
            </behavior>
        </endpointBehaviors>
    </behaviors>
    <bindings>
        <customBinding>
            <binding name="WebHttpBinding_ITestAPI">

              <httpTransport/>
            </binding>
        </customBinding>
    </bindings>
    <client>
        <endpoint address="https://localhost/AuthWithSSLTest/API/API.svc/TestMethod"
            behaviorConfiguration="NewBehavior" binding="customBinding"
            bindingConfiguration="WebHttpBinding_ITestAPI"
            contract="TestAPI.ITestAPI" name="WebHttpBinding_ITestAPI" />
    </client>
</system.serviceModel>

Wenn ich versuche, den Client auszuführen, heißt es Provided URI scheme Https is invalid, http required.

Auch wenn ich versuche, den Webdienst von VS2008 aufzurufen, heißt es "Konnte keine Basisadresse finden, die Schema https für den Endpunkt mit Bindung WebHttpBinding entspricht. Registrierte Basisadressschemata sind [http]."

wenn ich versuche, den Webdienst von IIS aus auszuführen, heißt es: "Es konnte keine Basisadresse gefunden werden, die dem Schema http für den Endpunkt mit der Bindung WebHttpBinding entspricht. Registrierte Basisadressschemata sind [https]."

Ich habe versucht, zu googeln und alle vorgeschlagenen Dinge ausprobiert, aber ohne Erfolg. Bitte Hilfe.

Vielen Dank im Voraus, Tara Singh

1voto

Ray Vernagus Punkte 6070

Versuchen Sie, in Ihrer Client-Konfiguration etwas zu ändern:

<httpTransport/>

zu:

<httpsTransport/>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X