Aracılığıyla paylaş


Güvenlik doğrulaması

ServiceValidation örneği, belirli ölçütleri karşıladığından emin olmak için bilgisayardaki hizmetleri doğrulamak için özel bir davranışın nasıl kullanılacağını gösterir. Bu örnekte hizmetler, hizmetteki her uç noktayı tarayarak ve bunların güvenli bağlama öğeleri içerip içermediğini denetleyerek özel davranış tarafından doğrulanır. Bu örnek, Başlarken'i temel alır.

Not

Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda yer alır.

Uç Nokta Doğrulama Özel Davranışı

Arabirimde IServiceBehavior yer alan yönteme Validate kullanıcı kodu eklenerek, kullanıcı tanımlı eylemleri gerçekleştirmek için bir hizmete veya uç noktaya özel davranış verilebilir. Aşağıdaki kod, bir hizmette yer alan ve bağlama koleksiyonlarında güvenli bağlamalar için arama yapan her uç nokta arasında döngü yapmak için kullanılır.

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

Web.config dosyasına aşağıdaki kodu eklemek, hizmetin tanıyacak davranış uzantısını ekler serviceValidate .

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

Davranış uzantısı hizmete eklendikten sonra, artık davranışı Web.config dosyasındaki davranış listesine ve dolayısıyla hizmete eklemek endpointValidate mümkündür.

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

Web.config dosyasına eklenen davranışlar ve uzantıları tek tek hizmetlere davranış uygularken Machine.config dosyasına eklendiğinde bilgisayarda etkin olan her hizmete davranış uygulanır.

Not

Tüm hizmetlere davranış eklerken, herhangi bir değişiklik yapmadan önce Machine.config dosyasını yedeklemek önerilir.

Şimdi bu örneğin client\bin dizininde sağlanan istemciyi çalıştırın. Şu iletiyle bir özel durum oluşturulur: "İstenen hizmet http://localhost/servicemodelsamples/service.svc etkinleştirilemedi." Uç nokta doğrulama davranışı tarafından güvenli olmadığı kabul edildiğinden ve hizmetin başlatılmasını önlediğinden bu beklenen bir durumdur. Davranış ayrıca hangi uç noktanın güvenli olmadığını açıklayan bir iç özel durum oluşturur ve sistem Olay Görüntüleyicisi "System.ServiceModel 4.0.0.0" kaynağı ve "WebHost" kategorisi altında bir ileti yazar. Bu örnekte hizmette izlemeyi açmak da mümkündür. Bu, kullanıcının Hizmet İzleme Görüntüleyicisi aracını kullanarak sonuçta elde edilen hizmet izlemelerini açarak uç nokta doğrulama davranışı tarafından oluşan özel durumları görüntülemesine olanak tanır.

Olay Görüntüleyicisi başarısız uç nokta doğrulama özel durum iletilerini görüntüleme

  1. Başlat menüsüne tıklayın ve Çalıştır'ı seçin.

  2. Yazın eventvwr ve Tamam'a tıklayın.

  3. Olay Görüntüleyicisi penceresinde Uygulama'ya tıklayın.

  4. Güvenli olmayan uç nokta iletilerini görüntülemek için Uygulama penceresindeki "WebHost" kategorisi altında son eklenen "System.ServiceModel 4.0.0.0" olayına çift tıklayın.

Örneği ayarlama, derleme ve çalıştırma

  1. Windows Communication Foundation Örnekleri için Tek Seferlik Kurulum Yordamı'nı gerçekleştirdiğinizden emin olun.

  2. Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örnekleri Oluşturma başlığındaki yönergeleri izleyin.

  3. Örneği tek veya makineler arası bir yapılandırmada çalıştırmak için Windows Communication Foundation Örneklerini Çalıştırma başlığındaki yönergeleri izleyin.

Ayrıca bkz.