Megosztás:


Biztonsági ellenőrzés

A ServiceValidation-minta bemutatja, hogyan használható egyéni viselkedés a számítógépek szolgáltatásainak ellenőrzésére annak biztosítása érdekében, hogy megfelelnek bizonyos feltételeknek. Ebben a mintában a személyre szabott viselkedés ellenőrzi a szolgáltatásokat úgy, hogy minden végpontot átvizsgál, és ellenőrzi, tartalmaznak-e biztonságos kapcsolati elemeket. Ez a minta az első lépéseken alapul.

Megjegyzés:

A minta telepítési eljárása és összeállítási utasításai a témakör végén találhatók.

Végpontérvényesítés egyéni viselkedése

Ha felhasználói kódot ad hozzá az ValidateIServiceBehavior interfészben található metódushoz, egyéni viselkedést adhat egy szolgáltatásnak vagy végpontnak a felhasználó által meghatározott műveletek végrehajtásához. Az alábbi kód egy szolgáltatásban található végpontokon keresztüli ciklusok végrehajtására szolgál, amelyek biztonságos kötéseket keresnek a kötésgyűjteményeikben.

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.");
    }
}

Ha hozzáadja a következő kódot Web.config fájlhoz, hozzáadja a serviceValidate szolgáltatás felismerendő viselkedési bővítményét.

<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>

Miután hozzáadta a viselkedésbővítményt a szolgáltatáshoz, hozzáadhatja a endpointValidate viselkedést a Web.config fájlban található viselkedések listájához, és így a szolgáltatáshoz.

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

A Web.config fájlhoz hozzáadott viselkedések és bővítményeik viselkedést alkalmaznak az egyes szolgáltatásokra, a Machine.config fájlhoz hozzáadva pedig a számítógépen aktív összes szolgáltatás viselkedését.

Megjegyzés:

Ha viselkedést ad hozzá az összes szolgáltatáshoz, javasolt biztonsági másolatot készíteni a Machine.config fájlról, mielőtt bármilyen módosítást végez.

Most futtassa a minta ügyfél\bin könyvtárában megadott ügyfelet. A rendszer kivételt jelez a következő üzenettel: "A kért szolgáltatás http://localhost/servicemodelsamples/service.svc nem aktiválható." Ez azért várható, mert a végpont nem biztonságosnak számít a végpont érvényesítési viselkedése miatt, és megakadályozza a szolgáltatás elindítását. A viselkedés egy belső kivételt is jelez, amely leírja, hogy melyik végpont nem biztonságos, és üzenetet ír a rendszer eseménynaplójának a "System.ServiceModel 4.0.0.0" forrás és a "WebHost" kategória alatt. Ebben a mintában a szolgáltatás nyomkövetését is bekapcsolhatja. Ez lehetővé teszi a felhasználó számára, hogy megtekintse a végpont-érvényesítési viselkedés által előidézett kivételeket az eredményként kapott szolgáltatáskövetések megnyitásával a Service Trace Viewer eszközzel.

Sikertelen végpontérvényesítési kivételüzenetek megtekintése az Eseménynaplóban

  1. Kattintson a Start menüre, és válassza a Futtatás lehetőséget.

  2. Írja be eventvwr és kattintson az OK gombra.

  3. Az Eseménynapló ablakban kattintson az Alkalmazás gombra.

  4. Kattintson duplán a nemrég hozzáadott "System.ServiceModel 4.0.0.0" eseményre az Alkalmazásablak "WebHost" kategóriájában a nem biztonságos végpontüzenetek megtekintéséhez.

A minta beállítása, összeállítása és futtatása

  1. Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták One-Time beállítási eljárását.

  2. A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse Windows Communication Foundation-mintákcímű témakör utasításait.

  3. Ha a mintát egy vagy több gép közötti konfigurációban szeretné futtatni, kövesse A Windows Communication Foundation-minták futtatásacímű témakör utasításait.

Lásd még