RemoteCertificateValidationCallback Temsilci

Tanım

Kimlik doğrulaması için kullanılan uzak Güvenli Yuva Katmanı (SSL) sertifikasını doğrular.

public delegate bool RemoteCertificateValidationCallback(System::Object ^ sender, X509Certificate ^ certificate, X509Chain ^ chain, SslPolicyErrors sslPolicyErrors);
public delegate bool RemoteCertificateValidationCallback(object sender, X509Certificate? certificate, X509Chain? chain, SslPolicyErrors sslPolicyErrors);
public delegate bool RemoteCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors);
type RemoteCertificateValidationCallback = delegate of obj * X509Certificate * X509Chain * SslPolicyErrors -> bool
Public Delegate Function RemoteCertificateValidationCallback(sender As Object, certificate As X509Certificate, chain As X509Chain, sslPolicyErrors As SslPolicyErrors) As Boolean 

Parametreler

sender
Object

Bu doğrulama için durum bilgilerini içeren bir nesne.

certificate
X509Certificate

Uzak tarafın kimliğini doğrulamak için kullanılan sertifika.

chain
X509Chain

Uzak sertifikayla ilişkili sertifika yetkilileri zinciri.

sslPolicyErrors
SslPolicyErrors

Uzak sertifikayla ilişkili bir veya daha fazla hata.

Dönüş Değeri

Boolean Belirtilen sertifikanın kimlik doğrulaması için kabul edilip edilmediğini belirleyen bir değer.

Örnekler

Aşağıdaki kod örneği, sınıfının bir örneği RemoteCertificateValidationCallback tarafından çağrılan bir yöntem uygular. Doğrulama hataları varsa, bu yöntem bunları görüntüler ve kimliği doğrulanmamış sunucuyla iletişimi engelleyen döndürür false.


// The following method is invoked by the RemoteCertificateValidationDelegate.
public static bool ValidateServerCertificate(
      object sender,
      X509Certificate certificate,
      X509Chain chain,
      SslPolicyErrors sslPolicyErrors)
{
   if (sslPolicyErrors == SslPolicyErrors.None)
        return true;

    Console.WriteLine("Certificate error: {0}", sslPolicyErrors);

    // Do not allow this client to communicate with unauthenticated servers.
    return false;
}

Aşağıdaki kod örneği, önceki kod örneğinde tanımlanan yöntemi kullanarak temsilciyi oluşturur.

// Create a TCP/IP client socket.
// machineName is the host running the server application.
TcpClient client = new TcpClient(machineName,5000);
Console.WriteLine("Client connected.");
// Create an SSL stream that will close the client's stream.
SslStream sslStream = new SslStream(
    client.GetStream(),
    false,
    new RemoteCertificateValidationCallback (ValidateServerCertificate),
    null
    );
// The server name must match the name on the server certificate.
try
{
    sslStream.AuthenticateAsClient(serverName);
}
catch (AuthenticationException e)
{
    Console.WriteLine("Exception: {0}", e.Message);
    if (e.InnerException != null)
    {
        Console.WriteLine("Inner exception: {0}", e.InnerException.Message);
    }
    Console.WriteLine ("Authentication failed - closing the connection.");
    client.Close();
    return;
}

Açıklamalar

Temsilcinin sslPolicyErrors bağımsız değişkeni, istemcinin veya sunucunun kimliğini doğrularken SSPI tarafından döndürülen sertifika hatalarını içerir. Bu Boolean temsilci tarafından çağrılan yöntem tarafından döndürülen değer, kimlik doğrulamasının başarılı olmasına izin verilip verilmeyeceğini belirler.

Bu temsilci sınıfıyla birlikte SslStream kullanılır.

Uzantı Metotları

Name Description
GetMethodInfo(Delegate)

Belirtilen temsilci tarafından temsil edilen yöntemi temsil eden bir nesnesi alır.

Şunlara uygulanır

Ayrıca bkz.