API7 Enterprise v3.2.15:多凭证认证
September 18, 2024
APIサービスがますます複雑化する中、IPアドレスや基本的なリクエストヘッダーにのみ依存する従来のアクセス制御方法では不十分となっています。API7 Enterpriseは「Consumers」という概念を導入し、開発者が特定のAPIルートやサービスにコンシューマーをバインドし、同じ認証プラグインを有効にすることができるようにしました。コンシューマーがリクエストを行う際、APIゲートウェイはリクエストに含まれる認証情報に基づいてコンシューマーを識別し、バインド関係に従って対応するアクセス制御ポリシーを適用します。
API7 Enterprise v3.2.15では、既存のコンシューマー認証メカニズムが強化されました。一般的に使用されるプラグインのインタラクションが最適化され、権限制御が改善され、プラグインごとに複数の認証情報がサポートされるようになりました。これにより、より柔軟な認証情報の管理とローテーションが可能になります。
最適化されたコンシューマー認証プラグインのインタラクション
単一の認証プラグイン内で複数の認証情報を簡単に追加できるようになりました。設定はコーディングから直感的なフォーム操作にアップグレードされ、設定プロセスがよりシンプルになりました。
現在、コンシューマーは以下の4つの認証方法を複数の認証情報でサポートしています。
キー認証
キー認証は、キーベースの認証方法です。コンシューマーはリクエストに一意のキーを含める必要があり、このキーはクエリ文字列パラメータまたはHTTPヘッダーに含めることができます。リクエストを設定する際、コンシューマーはキーが正しくリクエストに含まれていることを確認する必要があります。
ルートまたはサービスの設定では、Key Authプラグインを有効にし、適切なルールを設定してリクエスト内のキーを検証する必要があります。ゲートウェイは、リクエストに期待されるキーが含まれているか、およびキーが設定と一致するかを確認します。キーの検証が成功すると、リクエストはバックエンドサービスへのアクセスを許可されます。失敗した場合、リクエストは拒否されます。
基本認証
基本認証は、ユーザー名とパスワードに基づく認証方法です。コンシューマーはリクエストにユーザー名とパスワードを含む認証情報を含める必要があります。通常、HTTPリクエストのAuthorization
ヘッダーにエンコードされますが、クエリ文字列パラメータを介して渡すこともできます(ただし、機密情報が漏洩する可能性があるため推奨されません)。コンシューマーは、リクエストを設定する際にエンコードされた認証情報が正しく含まれていることを確認する必要があります。
ルートまたはサービスの設定では、Basic Authプラグインを有効にし、適切なルールを設定して認証情報を検証する必要があります。ゲートウェイは、リクエストにAuthorization
ヘッダーが含まれているか、および基本認証の形式に従っているかを確認します。形式はBasic <encoded-value>
で、<encoded-value>
はユーザー名とパスワードをコロンで区切ったものをBase64エンコードした結果です。ゲートウェイはこの値をデコードし、デコードされたユーザー名とパスワードを設定情報と比較します。一致する場合、リクエストはバックエンドサービスへのアクセスを許可されます。一致しない場合、リクエストは拒否されます。
基本認証はユーザー名とパスワードを平文で送信するため、Base64エンコードされているだけで暗号化されていないため、高セキュリティのシナリオには適していません。
JWT認証
JWT認証は、JSON Web Token(JWT)に基づく認証方法です。コンシューマーはリクエストに有効なJWTトークンを含める必要があります。通常、Authorization
ヘッダーにBearer <token>
形式で含まれますが、必要に応じてクエリ文字列パラメータやクッキーに含めることもできます。コンシューマーは、リクエストを設定する際にJWTトークンの正確性と有効性を確認する必要があります。
JWT認証情報を追加する際、JWTトークンの生成に必要なキー要素を設定できます。これには、署名と検証に使用するキー(公開鍵または秘密鍵)、対称暗号化に使用するシークレット、使用するアルゴリズム(例:HMAC-SHA256またはRSA-SHA256)、およびトークンの有効期間を設定するための有効期限が含まれます。有効で期限切れでないトークンを保持しているコンシューマーのみが、保護されたバックエンドサービスにアクセスできます。
HMAC認証
HMAC認証は、ハッシュベースのメッセージ認証コード(HMAC)に基づく認証方法です。コンシューマーはリクエストに対してHMAC値を生成する必要があります。通常、事前共有キーとリクエストの特定の部分(例:リクエストメソッド、URI、リクエストボディ)を使用して計算されます。このHMAC値はクエリ文字列パラメータまたはHTTPヘッダーに含めることができます。
リクエストを設定する際、コンシューマーは指定されたアルゴリズムと形式に従ってHMAC値を正しく生成し、リクエストに含める必要があります。具体的には、コンシューマーは既知のキーとリクエスト情報を使用して、ハッシュアルゴリズム(例:SHA-256)を使用してHMACを生成し、リクエストに追加します。
ルートまたはサービスの設定では、HMAC Authプラグインを有効にし、適切なルールを設定してリクエスト内のHMAC値を検証する必要があります。ゲートウェイは、リクエストにHMAC値が含まれているか、および同じ事前共有キーとアルゴリズムを使用してHMACを再計算し、その有効性を確認します。再計算されたHMACがリクエスト内の値と一致する場合、リクエストはバックエンドサービスへのアクセスを許可されます。
細かいコンシューマー権限ポリシー
認証情報の管理を最適化するだけでなく、コンシューマーの権限管理もさらに細かく調整しました。個々のコンシューマーレベルで権限を定義できるようになり、より細かいアクセス制御が可能になりました。認証情報の読み取りおよび書き込み権限は、コンシューマーの権限とは独立して制御されるようになり、より柔軟性が高まりました。
まとめ
API7 Enterpriseの最新バージョンでは、コンシューマー認証と権限管理に大きな改善が導入されました。プラグインのインタラクションが最適化され、独立した認証情報管理が可能になり、複数の認証方法がサポートされ、コンシューマー権限戦略が洗練されました。これらの強化により、認証情報管理の柔軟性、システムのセキュリティ、および全体的なユーザーエクスペリエンスが向上しました。
今後のアップデートでは、追加の認証方法が導入され、認証情報管理がさらに洗練される可能性があり、より革新的な機能と改善されたユーザーエクスペリエンスが提供されるでしょう。