基本認証を使用したHTTPリクエストの送信

Kotlin:
基本認証を使用したHTTPリクエストの送信

How to:(方法)

Kotlinで基本認証付きHTTPリクエストを簡単に送るコードです。HttpURLConnectionを使ってみましょう。

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

fun sendHttpGetRequestWithBasicAuth(url: String, username: String, password: String) {
    val connection = URL(url).openConnection() as HttpURLConnection
    val credentials = "$username:$password"
    val encodedCredentials = Base64.getEncoder().encodeToString(credentials.toByteArray())
    connection.requestMethod = "GET"
    connection.setRequestProperty("Authorization", "Basic $encodedCredentials")

    connection.connect()

    val responseCode = connection.responseCode
    println("Response Code: $responseCode")

    if (responseCode == HttpURLConnection.HTTP_OK) {
        val result = connection.inputStream.bufferedReader().readText()
        println("Response: $result")
    } else {
        println("Failed to get response")
    }

    connection.disconnect()
}

fun main() {
    val testUrl = "http://your-api-url.com"
    val username = "user"
    val password = "pass"
    sendHttpGetRequestWithBasicAuth(testUrl, username, password)
}

このコードは「user」と「pass」をユーザ名とパスワードに使って、your-api-url.com にGETリクエストを送ります。

Deep Dive(深掘り)

基本認証(Basic Authentication)は「ユーザ名:パスワード」をBase64でエンコードして、HTTPヘッダに加えます。歴史的に見ると、HTTP認証の中で最も古くからある方法です。セキュアではないHTTP上では平文で送られ、簡易に解読できるため、HTTPSとの組み合わせが一般的です。

代わりにトークンベースの認証(例えばOAuth)を使うこともあります。これは、ユーザー情報を直接送る代わりに、トークンを使用します。

実装の詳細としては、HttpURLConnectionはJava標準のネットワーククラスで、Kotlinでも使えます。更にOkHttpやRetrofitといったサードパーティのライブラリを使用することで、認証メカニズムをより簡単に実装できるし、セキュリティも向上します。

See Also(参照)