Autenticação

Este guia fornece a lista de tipos de autenticação suportados e descreve como lidar com vários pedidos de autenticação.

Autenticação Proxy, Básica, Digest e NTLM

Para tratar a autenticação Proxy, Basic, Digest ou NTLM, utilize o AuthenticateHandler. Você pode fornecer o nome de usuário e a senha necessários de forma programática, apresentar um pedido de nome de usuário/senha ou simplesmente cancelar um pedido de autenticação.

Para verificar se o pedido de autenticação é emitido por um servidor proxy, utilize a propriedade AuthenticateParameters.IsProxy . Ver o exemplo de código abaixo:

network.AuthenticateHandler = new Handler<AuthenticateParameters, AuthenticateResponse>(p =>
{
    if (p.IsProxy)
    {
        // Este pedido de autenticação é emitido por um servidor proxy.
    }
    // ...
};
network.AuthenticateHandler = 
    New Handler(Of AuthenticateParameters, AuthenticateResponse)(Function(p)
        If p.IsProxy Then
            ' Este pedido de autenticação é emitido por um servidor proxy.
        End If
        ' ...
    End Function)

O seguinte exemplo de código demonstra como fornecer as credenciais necessárias:

network.AuthenticateHandler = new Handler<AuthenticateParameters, AuthenticateResponse>(p =>
    AuthenticateResponse.Continue("<username>", "<password>"));
network.AuthenticateHandler = 
    New Handler(Of AuthenticateParameters, AuthenticateResponse)(Function(p) 
        Return AuthenticateResponse.Continue("<username>", "<password>")
    End Function)

Para cancelar o pedido de autenticação, utilize a seguinte abordagem:

network.AuthenticateHandler = new Handler<AuthenticateParameters, AuthenticateResponse>(p =>
    AuthenticateResponse.Cancel());
network.AuthenticateHandler = 
    New Handler(Of AuthenticateParameters, AuthenticateResponse)(Function(p) 
        Return AuthenticateResponse.Cancel()
    End Function)

Certificado de cliente HTTPS

No início de uma sessão SSL ou TLS, o servidor Web pode exigir que a aplicação cliente apresente um certificado de cliente para autenticação. Ao receber o certificado, o servidor o utiliza para identificar a fonte do certificado e determinar se o cliente deve ter acesso ao mesmo.

Se o servidor Web estiver ativado com a autenticação do certificado de cliente, apenas os usuários que tentarem estabelecer ligação a partir dos clientes com certificados de cliente válidos serão bem sucedidos.

Por padrão, o DotNetBrowser cancela todos os certificados. Para efetuar a autenticação e selecionar o certificado de cliente pretendido, utilize o SelectCertificateHandler. Você pode indicar ao servidor Web qual deles deve ser utilizado:

// Seleciona o último certificado de cliente na lista de certificados de cliente
// disponíveis.
browser.SelectCertificateHandler = 
    new Handler<SelectCertificateParameters, SelectCertificateResponse>(p =>
    {
        return SelectCertificateResponse.Select(p.Certificates.Count() - 1);
    });
' Seleciona o último certificado de cliente na lista de certificados de cliente
' disponíveis.
browser.SelectCertificateHandler = 
    New Handler(Of SelectCertificateParameters, SelectCertificateResponse)(Function(p)
        Return SelectCertificateResponse.Select(p.Certificates.Count() - 1)
    End Function)

Também é possível apresentar uma caixa de diálogo para selecionar os certificados de cliente disponíveis necessários.

Para cancelar a autenticação de um certificado de cliente, utilize a seguinte abordagem:

browser.SelectCertificateHandler = 
    new Handler<SelectCertificateParameters, SelectCertificateResponse>(p =>
    {
        return SelectCertificateResponse.Cancel();
    });
browser.SelectCertificateHandler = 
    New Handler(Of SelectCertificateParameters, SelectCertificateResponse)(Function(p)
        Return SelectCertificateResponse.Cancel()
    End Function)

Certificado de cliente personalizado

O DotNetBrowser permite selecionar um certificado de cliente personalizado que não está instalado e, como resultado, não está disponível na lista fornecida dos certificados de cliente. O exemplo seguinte demonstra como selecionar um certificado de cliente personalizado:

string clientCertFile = "<cert-file>.pfx";
string clientCertPassword = "<cert-password>";
// ...
X509Certificate2 certificate = new X509Certificate2(Path.GetFullPath(clientCertFile),
                                                    clientCertPassword,
                                                    X509KeyStorageFlags.Exportable);
Certificate cert = new Certificate(certificate);

browser.SelectCertificateHandler
    = new Handler<SelectCertificateParameters, SelectCertificateResponse>(p =>
    {
        return SelectCertificateResponse.Select(cert);
    });
Dim clientCertFile As String = "<cert-file>.pfx"
Dim clientCertPassword As String = "<cert-password>"
' ...
Dim certificate As New X509Certificate2(Path.GetFullPath(clientCertFile), 
                                        clientCertPassword,
                                        X509KeyStorageFlags.Exportable)
Dim cert As New Certificate(certificate)

browser.SelectCertificateHandler = 
    New Handler(Of SelectCertificateParameters, SelectCertificateResponse)(Function(p)
        Return SelectCertificateResponse.Select(cert)
    End Function)

No exemplo de código acima, um certificado de cliente personalizado é carregado a partir de <cert-file> utilizando o keystore PKCS12 e <cert-password>, e é criado um Certificado com este certificado de cliente.

Go Top