basic = "Basic " <> Base.encode64(proxy_user <> ":" <> proxy_password)

client = Tesla.client([], {Tesla.Adapter.Mint, [
  proxy: {:http, "proxy.example", 8080, []},
  proxy_headers: [{"proxy-authorization", basic}]
]})

アプリで必要な操作には、この Tesla クライアントを使います。操作の URL は引き続きサービスの接続先を指し、proxy_user と proxy_password は中継側のアカウントを表します。

トンネル型プロキシでは、Mint は proxy_headers を CONNECT に適用します。転送モードではリクエストにこれらのヘッダーを組み込みます。接続先のヘッダーを扱う一般的な Tesla ミドルウェアは、この先行する接続段階の入力とは異なります。

例では Basic を使っています。Base64 は表現形式であり、暗号化ではありません。保護の有無は、プロキシ接続のトランスポートに依存します。

これらのオプションは Mint アダプター用です。Finch、Hackney などに変更する場合は、それぞれのインターフェースを使う必要があります。接続先の Authorization は、引き続き別の認証のやり取りです。

関連記事