Dela via


Windows för meddelandesäkerhet

Det här exemplet visar hur du konfigurerar en WSHttpBinding bindning för att använda säkerhet på meddelandenivå med Windows-autentisering. Det här exemplet baseras på Komma igång. I det här exemplet finns tjänsten i Internet Information Services (IIS) och klienten är ett konsolprogram (.exe).

Anmärkning

Installationsproceduren och bygginstruktionerna för det här exemplet finns i slutet av det här avsnittet.

Standardsäkerheten för <wsHttpBinding> är meddelandesäkerhet med Windows-autentisering. Konfigurationsfilerna i det här exemplet anger uttryckligen modeattributet< för säkerheten> till Message och clientCredentialType attributet till Windows. Dessa värden är standardvärdena för den här bindningen, men de har konfigurerats uttryckligen, vilket visas i följande exempelkonfiguration för att demonstrera deras användning.

<bindings>
    <wsHttpBinding>
        <binding>
            <security mode="Message">
                <message clientCredentialType="Windows"/>
            </security>
        </binding>
    </wsHttpBinding>
</bindings>

Klientslutpunktskonfigurationen består av en absolut adress för tjänstslutpunkten, bindningen och kontraktet. Klientbindningen konfigureras med lämplig securityMode och authenticationMode.

<system.serviceModel>
  <client>
    <endpoint address=
            "http://localhost/servicemodelsamples/service.svc"
            binding="wsHttpBinding"
            bindingConfiguration="Binding1"
            contract="Microsoft.ServiceModel.Samples.ICalculator" />
  </client>

  <bindings>
    <wsHttpBinding>
      <!-- The default security for the WSHttpBinding is -->
      <!-- Message security using Windows authentication. -->
      <!-- This configuration explicitly defines the security mode -->
      <!-- as Message and the clientCredentialType as Windows -->
      <!-- for demonstration purposes. -->
      <binding name="Binding1">
        <security mode="Message">
          <message clientCredentialType="Windows"/>
        </security>
      </binding>
    </wsHttpBinding>
  </bindings>
</system.serviceModel>

Tjänstens källkod har ändrats för att visa hur ServiceSecurityContext den kan användas för att komma åt anroparens identitet.

public string GetCallerIdentity()
{
    // The Windows identity of the caller can be accessed on the ServiceSecurityContext.WindowsIdentity.
    return OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;
}

När du kör exemplet visas åtgärdsbegäranden och svar i klientkonsolfönstret. Den första metoden som heter - GetCallerIdentity - returnerar namnet på anroparidentiteten tillbaka till klienten. Tryck på RETUR i konsolfönstret för att stänga av klienten.

Så här konfigurerar du, skapar och kör exemplet

  1. Kontrollera att du har utfört One-Time installationsproceduren för Windows Communication Foundation-exempel.

  2. Om du vill skapa C# eller Visual Basic .NET-versionen av lösningen följer du anvisningarna i Skapa Windows Communication Foundation-exempel.

  3. Om du vill köra exemplet i en konfiguration med en eller flera datorer följer du anvisningarna i Köra Windows Communication Foundation-exempel.