Sdílet prostřednictvím


Ověření zabezpečení

Ukázka ServiceValidation ukazuje, jak pomocí vlastního chování ověřovat služby v počítači, aby se zajistilo, že splňují konkrétní kritéria. V této ukázce jsou služby ověřovány pomocí vlastního chování, které zahrnuje prohledávání každého koncového bodu služby a kontrolu, zda obsahují prvky zabezpečené vazby. Tato ukázka je založená na začínáme.

Poznámka:

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

Vlastní chování pro ověřování koncového bodu

Přidáním uživatelského kódu do Validate metody obsažené v IServiceBehavior rozhraní lze vlastnímu chování dát službě nebo koncovému bodu za účelem provádění uživatelem definovaných akcí. Následující kód se používá k procházení každého koncového bodu obsaženého ve službě, kdy se hledají zabezpečená připojení v jejich kolekcích vazeb.

public void Validate(ServiceDescription serviceDescription,
                                       ServiceHostBase serviceHostBase)
{
    // Loop through each endpoint individually, gathering their
    // binding elements.
    foreach (ServiceEndpoint endpoint in serviceDescription.Endpoints)
    {
        secureElementFound = false;

        // Retrieve the endpoint's binding element collection.
        BindingElementCollection bindingElements =
            endpoint.Binding.CreateBindingElements();

        // Look to see if the binding elements collection contains any
        // secure binding elements. Transport, Asymmetric, and Symmetric
        // binding elements are all derived from SecurityBindingElement.
        if ((bindingElements.Find<SecurityBindingElement>() != null) || (bindingElements.Find<HttpsTransportBindingElement>() != null) || (bindingElements.Find<WindowsStreamSecurityBindingElement>() != null) || (bindingElements.Find<SslStreamSecurityBindingElement>() != null))
        {
            secureElementFound = true;
        }

    // Send a message to the system event viewer when an endpoint is deemed insecure.
    if (!secureElementFound)
        throw new Exception(System.DateTime.Now.ToString() + ": The endpoint \"" + endpoint.Name + "\" has no secure bindings.");
    }
}

Přidáním následujícího kódu do souboru Web.config přidáte rozšíření chování serviceValidate, které služba rozpozná.

<system.serviceModel>
    <extensions>
        <behaviorExtensions>
            <add name="endpointValidate" type="Microsoft.ServiceModel.Samples.EndpointValidateElement, endpointValidate, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" />
        </behaviorExtensions>
    </extensions>
    ...
</system.serviceModel>

Jakmile je rozšíření chování přidáno do služby, je nyní možné přidat endpointValidate chování do seznamu chování v souboru Web.config a tak do služby.

<behaviors>
    <serviceBehaviors>
        <behavior name="CalcServiceSEB1">
            <serviceMetadata httpGetEnabled="true" />
            <endpointValidate />
        </behavior>
    </serviceBehaviors>
</behaviors>

Chování a jejich rozšíření přidaná do souboru Web.config aplikují chování na jednotlivé služby, zatímco při přidání do souboru Machine.config platí chování pro každou službu aktivní v počítači.

Poznámka:

Při přidávání chování do všech služeb se doporučuje před provedením jakékoli změny zálohovat soubor Machine.config.

Nyní spusťte klienta zadaného v adresáři client\bin této ukázky. Je vyvolána výjimka s následující zprávou: "Požadovanou službu http://localhost/servicemodelsamples/service.svc nelze aktivovat." To se očekává, protože koncový bod je považován za nezabezpečený v důsledku chování ověření koncového bodu a zabraňuje spuštění služby. Toto chování také vyvolá vnitřní výjimku, která popisuje, který koncový bod je nezabezpečený a zapíše zprávu do systémového prohlížeče událostí ve zdroji System.ServiceModel 4.0.0.0.0 a kategorii WebHost. V této ukázce je také možné zapnout trasování služby. To uživateli umožňuje zobrazit výjimky vyvolané ověřením chování koncového bodu otevřením výsledných trasování služby pomocí nástroje Prohlížeč trasování služby.

Zobrazení zpráv o výjimce neúspěšného ověření koncového bodu v Prohlížeči událostí

  1. Klikněte na nabídku Start a vyberte Spustit.

  2. Zadejte eventvwr a klepněte na tlačítko OK.

  3. V okně Prohlížeče událostí klepněte na tlačítko Aplikace.

  4. Dvakrát klikněte na nedávno přidanou událost System.ServiceModel 4.0.0.0 v kategorii WebHost v okně Aplikace a zobrazte nezabezpečené zprávy koncového bodu.

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

  1. Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.

  2. Pokud chcete sestavit verzi C# nebo Visual Basic .NET řešení, postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.

  3. Pokud chcete spustit ukázku v konfiguraci pro jeden počítač nebo pro více počítačů, postupujte podle pokynů v Spuštění ukázek Windows Communication Foundation.

Viz také