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

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

How to: (やり方)

Elmでは、ベーシック認証を伴うHTTPリクエストを送るには、カスタムヘッダーを作成して、リクエストに付加します。次のコード例をご覧ください。

import Http
import Base64

type alias Credentials =
    { username : String
    , password : String
    }

createBasicAuthHeader : Credentials -> Http.Header
createBasicAuthHeader creds =
    let
        encodedCredentials =
            Base64.encode (creds.username ++ ":" ++ creds.password)
    in
    Http.header "Authorization" ("Basic " ++ encodedCredentials)

-- Send a request with basic authentication
sendRequest : String -> Credentials -> Cmd msg
sendRequest url creds =
    let
        headers = 
            [ createBasicAuthHeader creds ]
    in
    Http.request
        { method = "GET"
        , headers = headers
        , url = url
        , body = Http.emptyBody
        , expect = Http.expectWhatever msg
        , timeout = Nothing
        , tracker = Nothing
        }

-- Example usage
login : Cmd msg
login =
    sendRequest "https://your-api.com/protected" { username = "user1", password = "pass123" }

正常に認証されると、期待されるデータが得られるでしょう。それ以外の場合は、認証エラーのレスポンスが返されます。

Deep Dive (詳細情報)

ベーシック認証の歴史は古く、初期のインターネットで使われ始めました。現在では、よりセキュアな方法(例えばOAuth 2.0)が好まれますが、単純なAPIや内部ツールでは依然として使われています。Elmでの実装では、Base64でエンコードする関数を使って認証情報をエンコードします。注意点として、HTTPS経由で送信することが重要です。これによって、中間者攻撃を防ぐことができます。ElmのHttpモジュールのバージョン2.0.0には、リクエストを細かく制御するための機能が充実しています。

See Also (関連情報)