Domanda

Esiste un modo utilizzando Java per sovrascrivere la finestra di dialogo di autenticazione del browser quando viene ricevuto un messaggio 401 dal server Web?Voglio sapere quando viene visualizzata questa finestra di dialogo e, invece di essere fornita all'utente, inserisco le credenziali per lui.

Panoramica dell'applicazione:

ho scritto il server web, quindi essenzialmente voglio impedire a qualcuno di aprire un browser esterno e inserire localhost e porta per accedere ai dati visualizzati.la mia app ha un browser Web incorporato collegato al mio server scritto.il browser visualizza il contenuto decrittografato, quindi se forzo l'autenticazione (anche per il mio browser incorporato), un browser esterno avrebbe bisogno di credenziali.se il mio browser incorporato tenta di accedere ai file, fornisco le credenziali per l'utente e visualizzo il contenuto

È stato utile?

Soluzione 2

SWT 3.5M6 ha un nuovo ascoltatore all'interno di esso chiamare AuthenticationListener. Si ascolta semplicemente per evento di autenticazione passata dal server e viene licenziato. Il codice qui sotto è quello che esegue il comportamento che volevo. Si attende l'autenticazione, e se l'host è la mia domanda, che passa di nuovo le credenziali. Naturalmente compilare l'USER_NAME, PASSWORD e HOST_NAME con le variabili del caso. In caso contrario, lascia il browser finestra pop-up di autenticazione e rende all'utente di inserire le credenziali. Questo codice può anche essere trovato nella pagina frammenti Eclipse SWT:

webBrowser.addAuthenticationListener (nuova 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 */
            }
        }
    });

Altri suggerimenti

Se non si cura di mostrare la password si può costruire l'URL in modo che passa le credenziali es. http: // nomeutente: password@www.example.com Questo sarà da passare il dialogo di autenticazione ma mostrerà all'utente le credenziali in modo, inoltre, non potrebbe essere quello che stai cercando.

la tua domanda è un po' poco chiara.L'intera autenticazione di base si basa su intestazioni HTTP.

Se il browser ottiene un'intestazione di autorizzazione, visualizza la finestra di dialogo.Il contenuto della finestra di dialogo viene quindi rinviato al server.Non c'è niente di speciale in questo.È nomeutente:password codificato in base64.Dai un'occhiata a

Wikipedia

Il problema è come vuoi interferire.Dovresti acquisire l'intestazione di autorizzazione e quindi per la richiesta successiva devi modificare l'intestazione HTTP per includere le credenziali.

Spero possa aiutare

Credo che questo è per lo più ciò che il report del server al browser del browser-dipendente comportamento e.

Ad esempio, Internet Explorer, essendo un prodotto Microsoft, supporta direttamente l'invio automatico di credenziali di Windows (è possibile modificare questo comportamento in Impostazioni Internet), dopo una richiesta anonima non riesce in un 401.

Firefox, ad esempio, non e richiederà sempre l'utente anche se è stato impostato per ricordare l'id e la password tramite il gestore di password. IE sarà anche chiesto se l'auto-login fallisce (come ad esempio le credenziali di Windows ancora si traducono in un 401, perché si sta id non è consentito).

Non credo che, come sviluppatore web, si ha molto controllo su questo, oltre la configurazione del server e applicazioni di lavorare nel modo più atteso e armonioso ... se si potesse, questo potrebbe entrare in cappello nero territorio .

Se si desidera controllare ciò che viene visualizzato per l'utente per l'autenticazione, è possibile modificare l'auth-metodo nella sezione login-config del web.xml da BASIC alla forma.

Quindi è possibile specificare quale pagina deve essere visualizzato quando l'utente esegue l'autenticazione, e, suppongo, pre-riempire le credenziali per loro ... ma non lo fa questa sconfitta l'intero scopo di sicurezza?

Impostazione di autenticazione per applicazioni Web

Modifica dopo ulteriori dettagli:

Il mio unico suggerimento sarebbe quello di cambiare l'auth-metodo per CLIENT-CERT e richiedono SSL a due vie, dove è richiesta anche al cliente di presentare un certificato al server. Se si installa il certificato nel browser incorporato (e assicurarsi che i browser esterni non può ottenere il certificato) allora si dovrebbe essere OK. E in realtà questo dovrebbe fermare ogni finestra di autenticazione venga visualizzato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top