Question

Est-il possible en utilisant Java pour l'emporter sur la boîte de dialogue d'authentification du navigateur lorsqu'un message 401 est reçu à partir du serveur Web? Je veux savoir quand cette boîte de dialogue est affichée, et au lieu d'être remis à l'utilisateur, je remplis les informations d'identification pour eux.

Présentation de l'application:

i écrit le serveur web, donc essentiellement je veux arrêter quelqu'un d'ouvrir un navigateur externe et de mettre dans le localhost et le port pour accéder aux données affichées. mon application a un navigateur Web intégré lié à mon serveur écrit. le navigateur affiche le contenu déchiffrées, donc si je force le auth (même pour mon navigateur intégré), un navigateur externe aurait besoin des informations d'identification. si mon navigateur intégré tente d'accéder aux fichiers, les informations d'identification i fournir pour l'utilisateur et afficher le contenu

Était-ce utile?

La solution 2

SWT 3.5M6 a un nouvel auditeur en son sein appeler AuthenticationListener. Il écoute tout simplement pour l'événement d'authentification passé du serveur et est tiré. Le code ci-dessous est ce qui exécute le comportement que je voulais. Il attend que le auth, et si l'hôte est ma demande, il passe en arrière les pouvoirs. FILL cours dans le USER_NAME, MOT DE PASSE et HOST_NAME avec des variables appropriées. Sinon, il permet la pop dialogue auth navigateur et permet l'utilisateur d'entrer les informations d'identification. Ce code peut également être trouvée dans la page des extraits Eclipse SWT:

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

Autres conseils

Si vous ne vous souciez pas le mot de passe montrant que vous pouvez construire l'URL il transmet les références ex. http: // nom d'utilisateur: password@www.example.com Cela par passer la boîte d'authentification mais montrer à l'utilisateur les informations d'identification afin aussi peut-être pas ce que vous cherchez.

votre question est un peu claire. L'authentification de base est entièrement basé sur en-têtes HTTP.

Si le navigateur est un en-tête d'autorisation qu'il affiche la boîte de dialogue. Le contenu de la boîte de dialogue est ensuite envoyée au serveur. Il n'y a rien de spécial à ce sujet. Il nom d'utilisateur iser: mot de passe dans base64. Jetez un coup d'oeil à

wikipedia

Le problème est de savoir comment vous voulez intervenir. Vous devez saisir l'en-tête d'autorisation et de la demande suivante, vous devez modifier l'en-tête HTTP pour inclure les informations d'identification.

espoir qui aide

Je pense que c'est surtout le comportement dépendant du navigateur et quels sont les rapports de serveur au navigateur.

Par exemple, Internet Explorer, étant un produit Microsoft, prend en charge directement l'envoi automatique des informations d'identification Windows (vous pouvez modifier ce comportement dans vos paramètres Internet) après une requête anonyme échoue dans un 401.

Firefox, par exemple, ne fonctionne pas et sera toujours demander à l'utilisateur, même si elle a été réglée de se rappeler l'identifiant et le mot de passe via le gestionnaire de mot de passe. IE invite également à saisir en cas d'échec de connexion automatique (telles que vos informations d'identification Windows sont toujours la 401 parce que vous êtes id est pas autorisé).

Je ne pense pas, en tant que développeur web, vous avez beaucoup de contrôle en plus la configuration de votre serveur et application pour travailler de la manière la plus attendue et harmonieux ... si vous pouvez, cela pourrait entrer dans territoire chapeau noir .

Si vous voulez contrôler ce qui est affiché à l'utilisateur pour l'authentification, vous pouvez modifier la auth méthode dans la section login-config du web.xml de BASIC à la forme.

Ensuite, vous pouvez spécifier quelle page doit être affichée lorsque l'utilisateur est authentifié, et, je suppose, pré-remplir les informations d'identification pour eux ... mais ne cette défaite tout le but de la sécurité?

Configuration de l'authentification pour les applications Web

Modifier après de détails:

Ma seule suggestion serait de changer la auth-méthode pour CLIENT-CERT et exiger SSL dans les deux sens, où le client est également tenu de présenter un certificat au serveur. Si vous installez le certificat dans votre navigateur intégré (et faire des navigateurs externes ne puissent pas toucher le certificat), alors vous devriez être OK. Et en fait cela devrait cesser toute boîte de dialogue d'authentification d'être affichée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top