Authentification de base avec Java 11 HttpClient

In this article, we will create Java 11 HttpClient that accesses Basic Auth protected REST API resource using sync and async mode. We will use Kotlin for a reference implementation. Spring Boot 2 based Basic Auth Server You can directly download the Basic Auth Server from Github Repository and run it locally using the below command. Starting the server using Gradle

$ ./gradlew bootRun


Server will expose http://localhost:8080/api/health endpoint, which can be tested using the below curl command.

$ curl -i --user admin:password -X GET http://localhost:8080/api/health


Java 11 HttpClient Java 11 HttpClient supports Basic Authentication using authenticator. We can use either send or sendAsync api for making synchronous and asynchronous (fully non-blocking) requests.

fun basicAuthSync() {
    val httpClient: HttpClient = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .authenticator(object : Authenticator() {   
                override fun getPasswordAuthentication(): PasswordAuthentication {
                    return PasswordAuthentication("admin", "password".toCharArray())
                }
            })
            .version(HttpClient.Version.HTTP_1_1)
            .build()
    val request = HttpRequest.newBuilder()
            .GET()
            .uri(URI.create("http://localhost:8080/api/health"))
            .build()
    val httpResponse = httpClient.send(request, BodyHandlers.ofString())
    println("httpResponse statusCode = ${httpResponse.statusCode()}")
    println(httpResponse.body())
}

PasswordAuthentication is configured for handling HTTP Basic Authentication.

httpClient.sendAsync(request, BodyHandlers.ofString())
        .thenApply(HttpResponse<String>::body)
        .thenAccept(System.out::println)
        .join()
Server Response
httpResponse statusCode = 200
{"status":"UP"}

What's new in Spring Boot 2 Spring boot 2 is liberated from legacy baggage of deprecated Java releases. Java 8 is the minimum baseline, with Java 9 support. Under the hood Spring Boot, 2 uses Spring 5. Reactive web programming support with Spring Webflux. Auto-configuration and starter POMs for reactive Spring Data Cassandra, MongoDB, Couchbase and Redis. Supports embedded Netty, along with HTTP/2 support for Tomcat, Undertow, and Jetty Kotlin we supported in Spring Boot 2, along with Junit 5. Now you can write Spring Boot 2 application from scratch in Kotlin.  A brand new actuator architecture, with support for Spring MVC, WebFlux and Jersey. Simplified security auto-configuration. Uses Spring Framework 5 under the hood. Gradle 4 required, works well with Gradle 5.

Related blog:

Best Java training in chennai

Recommended Posts

Authentification de base avec Java 11 HttpClient
J'ai essayé de faire une authentification de base avec Java
Implémenter l'authentification de base en Java
À propos de l'authentification par signature avec Java Time 1
Profilage avec Java Visual VM ~ Utilisation de base ~
Grammaire de base Java
Grammaire Java de base
Méthode de concurrence en Java avec exemple de base
Connaissances de base Java 1
[Java] Structure de base
[Java] [Basic] Glossaire
Grammaire de base Java
Le point addictif lors de l'authentification de base avec Java URLConnection
Grammaire de base Java
Exercice Java [basique]
Obtenez une authentification BASIC avec Spring Boot + Spring Security
Comment écrire du code de test avec la certification de base
Installez java avec Homebrew
Changer de siège avec Java
Installez Java avec Ansible
mémo de connaissances de base java
[Java] Type de données ①-Type de base
Téléchargement confortable avec JAVA
Manipulation de base de la date Java
Changer java avec direnv
Conventions de dénomination Java de base
Mémo d'apprentissage Java (basique)
Téléchargement Java avec Ansible
Raclons avec Java! !!
Construire Java avec Wercker
[Java] Notes de méthode de base
Types de données de base Java
Concepts de base Java OOps
Conversion Endian avec JAVA
Exécutez un traitement arbitraire après l'authentification de base avec Spring Boot.
[Débutant] Créez un jeu compétitif avec des connaissances de base sur Java
Recherche par requête POST avec Azure Search + Java Apache HttpClient
(Java) BDD facile avec Spectrum?
Utiliser des couches Lambda avec Java
Créer un multi-projet Java avec Gradle
Contenu d'apprentissage de base Java 7 (exception)
Configuration Java avec Spring MVC
Expérimentons l'expansion en ligne Java
Syntaxe de base Java + trappe α
Exécuter un lot avec docker-compose avec Java batch
[Template] Connexion MySQL avec Java
Réécrire Java try-catch avec facultatif
Installez Java 7 avec Homebrew (cask)
[Java] Communication JSON avec jackson
Java pour jouer avec Function
Essayez la connexion DB avec Java
[Java] Instruction de base pour les débutants
Activer Java EE avec NetBeans 9
Contenu d'apprentissage de base Java 5 (qualificatif)
[Java] JavaConfig avec classe interne statique
Essayez gRPC avec Java, Maven
Exploitons Excel avec Java! !!
Comment introduire l'authentification de base
Gestion des versions Java avec SDKMAN
Cryptage / décryptage RSA avec Java 8
Pagination de PDF avec Java + PDFBox.jar