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。
