KtorクライアントでのBasic認証
必要な依存関係: io.ktor:ktor-client-auth
コード例: client-auth-basic
Basic 認証スキームは、ユーザーのログインに使用できます。このスキームでは、ユーザーの資格情報は、Base64でエンコードされたユーザー名とパスワードのペアとして送信されます。
サーバー側では、KtorはBasic認証を処理するためのAuthenticationプラグインを提供します。
Basic認証のフロー
Basic認証のフローは次のようになります。
クライアントは、サーバーアプリケーション内の特定のリソースに対して、
Authorization
ヘッダーなしでリクエストを送信します。サーバーは、クライアントに
401
(Unauthorized) レスポンスステータスで応答し、WWW-Authenticate
レスポンスヘッダーを使用して、Basic認証スキームがルートを保護するために使用されているという情報を提供します。典型的なWWW-Authenticate
ヘッダーは次のようになります。WWW-Authenticate: Basic realm="Access to the '/' path", charset="UTF-8"
Ktorクライアントでは、
sendWithoutRequest
関数を使用して、WWW-Authenticate
ヘッダーを待たずに資格情報を送信できます。通常、クライアントはユーザーが資格情報を入力できるログインダイアログを表示します。その後、クライアントは、Base64でエンコードされたユーザー名とパスワードのペアを含む
Authorization
ヘッダーでリクエストを送信します。例:Authorization: Basic amV0YnJhaW5zOmZvb2Jhcg
サーバーはクライアントから送信された資格情報を検証し、要求されたコンテンツで応答します。
Basic認証を構成する
Basic
スキームを使用してAuthorization
ヘッダーにユーザーの資格情報を送信するには、basic
認証プロバイダーを次のように構成する必要があります。
install
ブロック内でbasic関数を呼び出します。BasicAuthCredentialsを使用して必要な資格情報を提供し、このオブジェクトをcredentials関数に渡します。
realm
プロパティを使用してレルムを構成します。kotlinval client = HttpClient(CIO) { install(Auth) { basic { credentials { BasicAuthCredentials(username = "jetbrains", password = "foobar") } realm = "Access to the '/' path" } } }
オプションで、
WWW-Authenticate
ヘッダーを含む401
(Unauthorized) レスポンスを待たずに、初期リクエストで資格情報を送信するように有効にします。ブール値を返すsendWithoutRequest
関数を呼び出し、リクエストパラメーターをチェックする必要があります。kotlininstall(Auth) { basic { // ... sendWithoutRequest { request -> request.url.host == "0.0.0.0" } } }
完全な例はこちらで確認できます: client-auth-basic。