Sdílet prostřednictvím


Přenos WS s pověřením zpráv

Tato ukázka ukazuje použití zabezpečení přenosu SSL v kombinaci s přenášenými přihlašovacími údaji klienta ve zprávě. Tato ukázka používá wsHttpBinding vazbu.

Vazba ve výchozím nastavení wsHttpBinding poskytuje komunikaci HTTP. Pokud je tato vazba nakonfigurovaná pro zabezpečení přenosu, podporuje komunikaci HTTPS. HTTPS poskytuje ochranu důvěrnosti a integrity zpráv přenášených přes drát. Sada ověřovacích mechanismů, které lze použít k ověření klienta ve službě, je však omezená na to, co přenos HTTPS podporuje. Windows Communication Foundation (WCF) nabízí TransportWithMessageCredential režim zabezpečení, který je navržený k vyřešení tohoto omezení. Pokud je tento režim zabezpečení nakonfigurovaný, zabezpečení přenosu slouží k zajištění důvěrnosti a integrity přenášených zpráv a k ověření služby. Ověřování klienta se ale provádí tak, že přihlašovací údaje klienta umístíte přímo do zprávy. To vám umožní použít jakýkoli typ přihlašovacích údajů, který je podporován režimem zabezpečení zpráv pro ověřování klienta a zároveň zachovat výhody výkonu režimu zabezpečení přenosu.

V této ukázce UserName se k ověření klienta ve službě používá typ přihlašovacích údajů.

Tato ukázka vychází ze služby Začínáme , která implementuje službu kalkulačky. Vazba wsHttpBinding se zadává a konfiguruje v konfiguračních souborech aplikace pro klienta a službu.

Poznámka:

Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.

Kód programu v ukázce je téměř stejný jako kód služby Začínáme . Existuje jedna další operace poskytovaná smlouvou o poskytování služeb - GetCallerIdentity. Tato operace vrátí volajícímu název identity volajícího.

public string GetCallerIdentity()
{
    // Use ServiceSecurityContext.WindowsIdentity to get the name of the caller.
    return ServiceSecurityContext.Current.WindowsIdentity.Name;
}

Před sestavením a spuštěním ukázky musíte vytvořit certifikát a přiřadit ho pomocí Průvodce certifikátem webového serveru. Definice koncového bodu a definice vazby v nastavení konfiguračního souboru umožňují TransportWithMessageCredential režim zabezpečení, jak je znázorněno v následující ukázkové konfiguraci klienta.

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

  <bindings>
    <wsHttpBinding>
      <!--
        This configuration defines the security mode as TransportWithMessageCredential.
        and the clientCredentialType as UserName.
        -->
      <binding name="Binding1">
        <security mode ="TransportWithMessageCredential">
          <message clientCredentialType="UserName" />
        </security>
      </binding>
    </wsHttpBinding>
  </bindings>
</system.serviceModel>

Zadaná adresa používá https:// schéma. Konfigurace vazby nastaví režim zabezpečení na TransportWithMessageCredential. Stejný režim zabezpečení musí být zadán v souboru Web.config služby.

Vzhledem k tomu, že certifikát použitý v této ukázce je testovací certifikát vytvořený pomocí Makecert.exe, zobrazí se výstraha zabezpečení při pokusu o přístup k adrese https: adresa, například https://localhost/servicemodelsamples/service.svc, z prohlížeče. Aby klient WCF mohl pracovat s testovacím certifikátem, byl do klienta přidán další kód, který potlačí výstrahu zabezpečení. Tento kód a doprovodná třída se při použití produkčních certifikátů nevyžaduje.

// WARNING: This code is only needed for test certificates such as those created by makecert. It is
// not recommended for production code.
PermissiveCertificatePolicy.Enact("CN=ServiceModelSamples-HTTPS-Server");

Při spuštění ukázky se požadavky na operace a odpovědi zobrazí v okně konzoly klienta. Stisknutím klávesy ENTER v okně klienta klienta ukončete klienta.

Username authentication required.
Provide a valid machine or domain account. [domain\\user]
   Enter username:
YourDomainName\YourAccountName
   Enter password:
********
YourDomainName\YourAccountName
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714

Press <ENTER> to terminate client.

Nastavení, sestavení a spuštění ukázky

  1. Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázovou instalační proceduru.

  2. Ujistěte se, že jste provedli pokyny k instalaci certifikátu serveru Internetová informační služba (IIS).

  3. Pokud chcete sestavit edici C# nebo Visual Basic .NET řešení, postupujte podle pokynů v části Sestavení ukázek windows Communication Foundation.

  4. Pokud chcete spustit ukázku v konfiguraci s jedním nebo více počítači, postupujte podle pokynů v části Spuštění ukázek windows Communication Foundation.