Skip to content
Client Plugin

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アーティファクトを含める必要があります。

Kotlin
Groovy
XML

Ktorクライアントに必要なアーティファクトの詳細については、

クライアントの依存関係の追加
既存のプロジェクトにクライアントの依存関係を追加する方法を学びます。
を参照してください。

Authのインストール

Authプラグインをインストールするには、クライアント設定ブロック内でinstall関数に渡します。

kotlin
import io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.plugins.auth.*
//...
val client = HttpClient(CIO) {
    install(Auth) {
        // 認証を設定
    }
}

これで、必要な認証プロバイダーを設定できます。

認証の設定

ステップ1:認証プロバイダーの選択

特定の認証プロバイダー(basicdigest、またはbearer)を使用するには、installブロック内で対応する関数を呼び出す必要があります。例えば、basic認証を使用するには、basic関数を呼び出します。

kotlin
install(Auth) {
    basic {
        // Basic認証を設定
    }
}

このブロック内で、このプロバイダーに固有の設定を行うことができます。

ステップ2:(オプション)レルムの設定

オプションとして、realmプロパティを使用してレルムを設定できます。

kotlin
install(Auth) {
    basic {
        realm = "Access to the '/' path"
        // ...
    }
}

異なるリソースにアクセスするために、異なるレルムを持つ複数のプロバイダーを作成できます。

kotlin
install(Auth) {
    basic {
        realm = "Access to the '/' path"
        // ...
    }
    basic {
        realm = "Access to the '/admin' path"
        // ...
    }
}

この場合、クライアントはWWW-Authenticateレスポンスヘッダー(レルムが含まれています)に基づいて必要なプロバイダーを選択します。

ステップ3:プロバイダーの設定

特定のプロバイダーの設定方法については、以下の対応するトピックを参照してください。