Frage

Gibt es eine Möglichkeit mit Hilfe von Java zu over-ride des Browser-Authentifizierung Dialogfeld, wenn eine 401-Nachricht von dem Web-Server empfangen wird? Ich möchte wissen, wenn dieser Dialog angezeigt wird, und statt sie an den Benutzer gegeben wird, ich fülle die Berechtigungsnachweise für sie.

Übersicht der Anwendung:

Ich schrieb den Web-Server, so im Wesentlichen mag ich jemanden daran hindern, einen externen Browser zu öffnen und in dem lokalen Host und Port setzt Zugriff auf die Daten zu erhalten angezeigt. meine App verfügt über einen integrierten Web-Browser auf meinen schriftlichen Server verbunden. Der Browser zeigt entschlüsselten Inhalt, so dass, wenn ich die Auth (auch für meinen eingebetteten Browser) zwingen, ein externer Browser würde Anmeldeinformationen benötigen. wenn mein eingebetteter Browser die Dateien zuzugreifen versucht, ich die Anmeldeinformationen für den Benutzer liefern und den Inhalt an

War es hilfreich?

Lösung 2

SWT 3.5M6 hat einen neuen Zuhörer in ihm AuthenticationListener nennen. Es hört einfach für die Authentifizierung Ereignis vom Server übergeben und gebrannt wird. Der folgende Code ist das, was das Verhalten führt die ich wollte. Es wartet auf die Auth, und wenn der Host meine Anwendung ist, übergibt er die Anmeldeinformationen zurück. Natürlich im USER_NAME, Passwort und HOST_NAME mit entsprechenden Variablen füllen. Ansonsten läßt es die Pop-up-Auth-Dialog-Browser und macht den Benutzer die Anmeldeinformationen eingeben. Dieser Code kann auch in der Eclipse SWT-Schnipsel-Seite zu finden:

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

Andere Tipps

Wenn Sie über das Passwort nicht kümmern zeigen Sie die URL konstruieren, so können Sie die Anmeldeinformationen ab gehen. http: // username: password@www.example.com Dies wird durch das Authentifizierungsfeld passieren aber den Benutzer zeigen die Anmeldeinformationen so auch vielleicht nicht, was Sie suchen.

Ihre Frage ist ein wenig unklar. Die gesamte Basis-Authentifizierung basiert auf HTTP-Header.

Wenn der Browser eine Genehmigung Header bekommt, als es den Dialog anzeigt. Der Inhalt aus dem Dialog wird dann zurück an den Server senden. Es gibt nichts Besonderes. Es iser Benutzername: Passwort in Base64 codiert. Werfen Sie einen Blick auf

wikipedia

Das Problem ist, wie Sie stören wollen. Sie würden die Autorisierungsheader und dann für die nächste Anfrage Sie haben zu ändern, die HTTP-Header enthalten die Anmeldeinformationen erfassen.

Hoffnung, die hilft

Ich denke, dies ist meist browserabhängiges Verhalten und was meldet der Server an den Browser.

Zum Beispiel Internet Explorer, ist ein Microsoft-Produkt, direkt unterstützt die automatische Windows-Anmeldeinformationen zu senden (Sie dieses Verhalten in Ihren Internet-Einstellungen ändern können), nachdem eine anonyme Anforderung fehlschlägt in einem 401.

Firefox zum Beispiel fordert nicht und wird immer den Benutzer selbst wenn er eingestellt wurde, die ID und das Passwort über den Passwort-Manager zu erinnern. IE wird auch aufgefordert, wenn die automatische Anmeldung nicht möglich (wie Ihre Windows-Anmeldeinformationen in einem 401 führen nach wie vor, weil Sie id sind nicht erlaubt).

Ich glaube nicht, als Web-Entwickler, Sie viel Kontrolle über diese haben neben Ihrem Server und Anwendung in der am meisten erwarteten und harmonische Art und Weise zu arbeiten Einrichtung ..., wenn Sie könnten, könnte dies erhalten in schwarzes Hut Gebiet .

Wenn Sie steuern möchten, was für die Authentifizierung für den Benutzer angezeigt wird, können Sie die Auth-Methode in der Login-config Abschnitt des web.xml von BASIC ändern zu bilden.

Dann können Sie angeben, welche Seite angezeigt werden soll, wenn der Benutzer authentifiziert, und ich nehme an, Vorfülle die Berechtigungsnachweise für sie ... aber nicht diese Niederlage des ganzen Zweck der Sicherheit?

Einrichten der Authentifizierung für Web-Anwendungen

Bearbeiten nach weiteren Details:

Mein einziger Vorschlag wäre, die Auth-Methode CLIENT-CERT zu ändern und Zwei-Wege-SSL erfordern, wo der Kunde auch ein Zertifikat auf den Server präsentieren erforderlich ist. Wenn Sie das Zertifikat in Ihrem eingebetteten Browser installieren (und sicher externen Browser machen das Zertifikat nicht bekommen kann), dann sollten Sie in Ordnung sein. Und eigentlich sollte dies von einem beliebigen Authentifizierungsdialog beenden angezeigt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top