Inviare una richiesta http con autenticazione di base

Kotlin:
Inviare una richiesta http con autenticazione di base

How to:

In Kotlin, possiamo utilizzare HttpURLConnection per inviare richieste HTTP con autenticazione di base.

import java.net.HttpURLConnection
import java.net.URL
import java.util.Base64

fun main() {
    val url = URL("http://tuo.server.com/api")
    val username = "tuonomeutente"
    val password = "tuapassword"

    with(url.openConnection() as HttpURLConnection) {
        val creds = "$username:$password"
        val auth = Base64.getEncoder().encodeToString(creds.toByteArray())
        setRequestProperty("Authorization", "Basic $auth")

        println("Response Code: $responseCode")
        println("Response Message: $responseMessage")
    }
}

Output potrebbe essere simile a:

Response Code: 200
Response Message: OK

Deep Dive

L’autenticazione di base HTTP è uno dei metodi più semplici: codifica username e password in Base64 e le inserisce nell’header della richiesta HTTP. Nato negli anni ‘90, non è il più sicuro perché può essere facilmente decodificato. Alternative moderne includono OAuth e JWT che forniscono maggiore sicurezza attraverso token.

HttpURLConnection è parte del JDK standard, ma librerìe come OkHttp o Retrofit rendono la codifica meno verbosa e più gestibile. Ecco un esempio con OkHttp:

val client = OkHttpClient()
val credentials = Credentials.basic("username", "password")
val request = Request.Builder()
    .url("http://your.server.com/api")
    .header("Authorization", credentials)
    .build()

client.newCall(request).execute().use { response ->
    println(response.code)
    println(response.message)
}

See Also