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ěřeny vlastním chováním tak, že prohledávají jednotlivé koncové body služby a kontrolují, jestli obsahují zabezpečené prvky 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í ověření 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á ke smyčce přes každý koncový bod obsažený ve službě, který hledá zabezpečené vazby prostřednictvím jejich kolekcí 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 serviceValidate
rozšíření chování, 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>
Po přidání rozšíření chování do služby je nyní možné přidat endpointValidate
chování do seznamu chování v souboru Web.config, a proto 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 používají chování u jednotlivých služeb, zatímco při přidání do souboru Machine.config se chování vztahuje na 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ý chováním koncového bodu a zabrání 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ému Prohlížeč událostí ve zdroji System.ServiceModel 4.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č událostí
Klikněte na nabídku Start a vyberte Spustit.
Zadejte
eventvwr
a klepněte na tlačítko OK.V okně Prohlížeč událostí klepněte na tlačítko Aplikace.
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
Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázovou instalační proceduru.
Pokud chcete sestavit edici C# nebo Visual Basic .NET řešení, postupujte podle pokynů v části Sestavení ukázek windows Communication Foundation.
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.