Maison > Java > javaDidacticiel > Comment implémenter l'authentification HTTP de base en Java avec HttpClient : éviter les pièges courants ?

Comment implémenter l'authentification HTTP de base en Java avec HttpClient : éviter les pièges courants ?

Susan Sarandon
Libérer: 2024-11-16 11:52:03
original
1040 Les gens l'ont consulté

How to Implement HTTP Basic Authentication in Java with HttpClient: Avoiding Common Pitfalls?

Implémentation de l'authentification HTTP Basic en Java avec HttpClient

Prélude

Lors de la tentative d'émulation d'une commande curl avec authentification Basic dans Java, il est crucial de considérer les éléments suivants :

HttpClient 3.0

public class HttpBasicAuth {
    // ...

    public static void main(String[] args) {
        // ...
        client.getState().setCredentials(
                new AuthScope("hostname"), // Use the IP address or hostname here
                new UsernamePasswordCredentials("username", "password")
        );
        // ...
    }
}
Copier après la connexion

HttpClient 4.0.1

public class HttpBasicAuth {
    // ...

    public static void main(String[] args) {
        // ...
        DefaultHttpClient httpclient = new DefaultHttpClient();

        httpclient.getCredentialsProvider().setCredentials(
                new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),
                new UsernamePasswordCredentials("username", "password")
        );
        // ...
    }
}
Copier après la connexion

Problème courant

Dans les exemples HttpClient 3.0 et 4.0.1, une erreur de serveur interne (500) peut se produire en raison d'une définition de portée non valide. La définition correcte de la portée dépend de la configuration du serveur cible. En définissant la portée sur AuthScope.ANY_HOST et AuthScope.ANY_PORT, vous supposez que les informations d'identification s'appliquent à n'importe quel hôte et port, ce qui peut ne pas être le cas. La vérification de la configuration du serveur cible et l'utilisation de la définition de portée appropriée devraient résoudre cette erreur.

Méthode alternative (HttpClient 4.0.1)

Une autre approche pour implémenter l'authentification de base à l'aide de HttpClient 4.0.1 est la suivante :

public class HttpBasicAuth {
    // ...

    public static void main(String[] args) {
        // ...
        String encoding = Base64.getEncoder().encodeToString((user + ":" + pwd).getBytes());
        HttpPost httpPost = new HttpPost("http://host:post/test/login");
        httpPost.setHeader(HttpHeaders.AUTHORIZATION, "Basic " + encoding);
        // ...
    }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal