WCF-Sicherheit-Authentifizierung

Ich habe einen einfachen service und ich versuche zum einrichten der Authentifizierung. Auf dem client möchte ich die Benutzer, geben Sie Ihr Windows-Benutzerkonto. Und die WCF verwenden Sie den Benutzernamen/das Kennwort vom client und authentifizieren Sie gegen die Windows-Authentifizierung.

Hier ist mein server-app.config

 <system.serviceModel>
    <services>
      <service name="WcfService.Service1" behaviorConfiguration="WcfService.Service1Behavior">
        <host>
          <baseAddresses>
            <add baseAddress = "http://localhost:8731/Design_Time_Addresses/WcfService/Service1/" />
          </baseAddresses>
        </host>
        <endpoint address ="" binding="wsHttpBinding" contract="WcfService.IService1">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="WcfService.Service1Behavior">
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="True" />

          <serviceCredentials>
            <userNameAuthentication userNamePasswordValidationMode = "Windows"/>
          </serviceCredentials>

        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

Hier ist meine client-app.config

<system.serviceModel>
    <bindings>
        <wsHttpBinding>
          <binding name="WSHttpBinding_IService1">

              <security mode = "Message">
                <message  clientCredentialType = "UserName"/>
              </security>

            </binding>
        </wsHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://localhost:8731/Design_Time_Addresses/WcfService/Service1/"
            binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService1"
            contract="ServiceReference1.IService1" name="WSHttpBinding_IService1">
            <identity>
                <dns value="localhost" />
            </identity>
        </endpoint>
    </client>
</system.serviceModel>

Hier ist mein code auf dem client

ServiceReference1.Service1Client client = new WcfAuthentication.ServiceReference1.Service1Client();

client.ClientCredentials.UserName.UserName = "mywindowsusername";
client.ClientCredentials.UserName.Password = "mywindowsuserpassword";
Console.WriteLine(client.GetData(5));

Aber ich bin immer diese exception :

{"Sicheren Kanal kann nicht geöffnet werden, da die Sicherheitsaushandlung mit dem remote-Endpunkt fehlgeschlagen ist. Dies kann durch fehlende oder falsch angegeben EndpointIdentity in der EndpointAddress verwendet, um den channel zu erstellen. Bitte überprüfen Sie die EndpointIdentity angegeben oder implizit durch die EndpointAddress korrekt identifiziert den remote-Endpunkt. "}
{"Die Anfrage für die Sicherheits-token ist ungültig oder fehlerhafte Elemente."}

InformationsquelleAutor pdiddy | 2010-09-01
Schreibe einen Kommentar