Pergunta

Existe uma maneira usando Java para sobrepor-se a caixa de diálogo de autenticação do navegador quando uma mensagem 401 é recebida a partir do servidor web? Eu quero saber quando esse diálogo está sendo exibido, e em vez de ser dada ao usuário, eu preencher as credenciais para eles.

Visão geral da aplicação:

i escreveu o servidor web, de modo essencialmente eu quero impedir alguém de abrir um navegador externo e colocar no localhost e a porta para ter acesso aos dados que estão sendo exibidos. Meu aplicativo tem um navegador web embutido ligado ao meu servidor escrito. O browser apresenta descriptografado conteúdo, então se eu forçar o auth (mesmo para meu navegador embutido), um navegador externo seria necessário credenciais. se o meu navegador embutido está tentando acessar os arquivos, eu fornecer as credenciais para o usuário e exibir o conteúdo

Foi útil?

Solução 2

SWT 3.5M6 tem um novo ouvinte dentro dela chamar AuthenticationListener. Ele simplesmente escuta para o evento de autenticação transmitidas a partir do servidor e é despedido. O código abaixo é o que executa o comportamento que eu queria. Ele aguarda o auth, e se o anfitrião é o meu aplicativo, ele passa de volta as credenciais. Claro preencher o USER_NAME, senha e HOST_NAME com variáveis ??apropriadas. Caso contrário, ele permite que o auth navegador de diálogo pop-up e faz com que o usuário insira as credenciais. Este código também pode ser encontrado na página do Eclipse SWT trechos:

webBrowser.addAuthenticationListener (novo AuthenticationListener ()

{

        public void authenticate(AuthenticationEvent event) {
            try {
                URL url = new URL(event.location);

                if (url.getHost().equals(HOST_NAME)) 
                {
                    event.user = USER_NAME;
                    event.password = PASSWORD;
                } 
                else 
                {       
                    /* do nothing, let default prompter run */
                }
            } catch (MalformedURLException e) {
                /* should not happen, let default prompter run */
            }
        }
    });

Outras dicas

Se você não se preocupam com a senha mostrando você pode construir a URL para que ele passa as credenciais ex. http: // username: password@www.example.com Isso por passar a caixa de autenticação mas vai mostrar ao usuário as credenciais assim também não pode ser o que você está procurando.

sua pergunta é um pouco incerto. Toda a autenticação básica é baseada em cabeçalhos HTTP.

Se o navegador recebe um cabeçalho de autorização que ele exibe o diálogo. O conteúdo do diálogo é, em seguida, enviar de volta para o servidor. Não há nada de especial nisso. Ele ISER usuário: senha em base64 codificados. Ter um olhar para

wikipedia

O problema é como você deseja interferir. Você teria que capturar o cabeçalho de autorização e, em seguida, para a próxima solicitação você tem que alterar o cabeçalho HTTP para incluir as credenciais.

esperança que ajuda

Eu acho que isso é principalmente os relatórios do servidor para o navegador navegador dependente comportamento e o.

Por exemplo, Internet Explorer, sendo um produto Microsoft, diretamente suporta envio automático de credenciais do Windows (você pode modificar esse comportamento em suas Configurações de Internet) após uma solicitação anônima falhar em um 401.

O Firefox, por exemplo, não e sempre solicitar que o usuário mesmo se ele foi criado para lembrar a ID e senha através do gerenciador de senhas. IE também prompt de se auto-login falhar (tais como as suas credenciais do Windows ainda resultar em um 401 porque você é id não é permitido).

Eu não acho, como um desenvolvedor web, você tem muito controle sobre isso além de configurar o servidor e aplicativo para o trabalho da maneira mais esperado e harmoniosa ... se você pudesse, isso pode entrar em black território chapéu .

Se você quiser controlar o que é exibido para o usuário para autenticação, você pode alterar o método de autenticação na seção de login-config do web.xml do básico ao FORM.

Em seguida, você pode especificar qual página deve ser exibida quando o usuário está autenticando, e, suponho, pré-preencher as credenciais para eles ... mas não faz esta derrota todo o propósito de segurança?

Configuração da autenticação para aplicativos da Web

Editar depois de mais detalhes:

A minha única sugestão seria a de alterar o método de autenticação para CLIENT-CERT e exigem SSL de duas vias, onde o cliente também é exigida a apresentação de um certificado para o servidor. Se você instalar o certificado em seu navegador embutido (e certifique-se de navegadores externos não podem obter o certificado), então você deve estar OK. E, na verdade, isso deve parar qualquer diálogo de autenticação que está sendo exibido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top