Ktor Clientにおける認証と認可
必須の依存関係: io.ktor:ktor-client-auth
Ktorは、クライアントアプリケーションにおける認証と認可を処理するためのAuthプラグインを提供します。典型的な使用シナリオには、ユーザーのログインや、特定のリソースへのアクセス権の取得が含まれます。
サーバー側では、Ktorは認証と認可を処理するためのAuthenticationプラグインを提供しています。
サポートされている認証タイプ
HTTPは、アクセス制御と認証のための一般的なフレームワークを提供しています。Ktorクライアントでは、以下のHTTP認証スキームを使用できます。
- Basic -
Base64
エンコーディングを使用してユーザー名とパスワードを提供します。HTTPSと組み合わせて使用しない限り、一般的に推奨されません。 - Digest - ユーザー名とパスワードにハッシュ関数を適用することで、暗号化された形式でユーザー認証情報を通信する認証方法です。
- Bearer - ベアラートークンと呼ばれるセキュリティトークンを使用する認証スキームです。例えば、OAuthフローの一部としてこのスキームを使用して、Google、Facebook、Twitterなどの外部プロバイダーを利用してアプリケーションのユーザーを認可できます。
依存関係の追加
認証を有効にするには、ビルドスクリプトにktor-client-auth
アーティファクトを含める必要があります。
Ktorクライアントに必要なアーティファクトの詳細については、
Authのインストール
Auth
プラグインをインストールするには、クライアント設定ブロック内でinstall
関数に渡します。
import io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.plugins.auth.*
//...
val client = HttpClient(CIO) {
install(Auth) {
// 認証を設定
}
}
これで、必要な認証プロバイダーを設定できます。
認証の設定
ステップ1:認証プロバイダーの選択
特定の認証プロバイダー(basic、digest、またはbearer)を使用するには、install
ブロック内で対応する関数を呼び出す必要があります。例えば、basic
認証を使用するには、basic関数を呼び出します。
install(Auth) {
basic {
// Basic認証を設定
}
}
このブロック内で、このプロバイダーに固有の設定を行うことができます。
ステップ2:(オプション)レルムの設定
オプションとして、realm
プロパティを使用してレルムを設定できます。
install(Auth) {
basic {
realm = "Access to the '/' path"
// ...
}
}
異なるリソースにアクセスするために、異なるレルムを持つ複数のプロバイダーを作成できます。
install(Auth) {
basic {
realm = "Access to the '/' path"
// ...
}
basic {
realm = "Access to the '/admin' path"
// ...
}
}
この場合、クライアントはWWW-Authenticate
レスポンスヘッダー(レルムが含まれています)に基づいて必要なプロバイダーを選択します。
ステップ3:プロバイダーの設定
特定のプロバイダーの設定方法については、以下の対応するトピックを参照してください。