Scroll
認証、セキュリティ、およびパフォーマンス
DrupalのJSON:API モジュールは、コンテンツをAPIとして公開する強力な方法を提供しますが、セキュリティと使いやすさには、適切な認証方法を選択することが不可欠です。このレビューでは、DrupalのJSONモジュールを扱う際に利用できるさまざまな認証オプションを探ります。
コアの認証方法
Drupal REST & JSON API Authenticationモジュール は、次のようなさまざまな認証方法を使用して、DrupalサイトのAPIへの無許可アクセスを制限し、保護します:
このモジュールは、ヘッドレス/デカップルドのDrupal構成でAPIコールを認証することも可能にします。
- 基本認証(Basic Authentication)
- APIキーに基づく認証
- アクセストークン/OAuthに基づく認証
- JWTトークンに基づく認証
- サードパーティプロバイダーのトークン認証
Cookieベースの認証
Drupalのデフォルトの認証方法はセッションCookieを使用します。ユーザーがDrupalのログインフォームからログインすると、セッションCookieが作成され、これを使用してJSONを認証できます。
リクエスト。
利点:
- ブラウザベースのアプリケーションに簡単に実装できる
- Drupalの既存の認証システムを使用する
- 同じドメインでホストされるJavaScriptアプリケーションでうまく機能する
制限事項:
- 追加の設定なしではクロスドメインリクエストに適さない
- モバイルアプリケーションやサードパーティ統合にはあまり理想的ではない
- セッション管理のオーバーヘッド
基本認証(Basic Authentication)
基本認証は、Authorizationヘッダーで各リクエストに認証情報(ユーザー名とパスワード)を送信する方式です。
利点:
- 実装が簡単
- HTTPクライアントで広くサポートされている
制限事項:
- 認証情報がすべてのリクエストで送信される
- HTTPS上でのみ安全
- 組み込みのトークン有効期限がない
コントリビュート認証モジュール
Simple OAuth (OAuth 2.0)
Simple OAuthは、DrupalのAPI認証用にOAuth 2.0プロトコルを実装します。
利点:
- 安全なトークンベースの認証
- リフレッシュトークンのサポート
- 細かい権限スコープ
- サードパーティ統合に理想的
- 広く採用されている標準規格
制限事項:
- 基本認証と比較してセットアップがより複雑
- OAuth 2.0のフローを正しく理解する必要がある
JWT (JSON Web Token)
JWTモジュールを使用すると、JSON Web Tokenを使用した認証が可能になります。
利点:
- ステートレス認証
- 検証のためのデータベースクエリを削減
- トークンにクレーム/メタデータを含めることができる
- 大規模環境で優れたパフォーマンス
制限事項:
- 適切なキー管理が必要
- 誤って実装するとセキュリティ上の懸念
- 組み込みのトークン失効がない(追加の対策なしの場合)
Key Auth
Key Authは、Drupal用のAPIキー認証を提供します。
利点:
- シンプルなAPIキー方式
- マシン間通信に適している
- 最小限のセットアップで済む
制限事項:
- ユーザー中心のアプリケーションではOAuthよりも安全性が低い
- 失効のオプションが限られている
- リフレッシュトークンの仕組みがない
Consumer Auth
Consumer Authは、DrupalのAPIシステムにおけるConsumerエンティティの機能を拡張します。
利点:
- Drupalのコンシューマーシステムと連携する
- 柔軟なコンシューマーベースの権限
- 他の認証方法を補完する
制限事項:
- 他の認証方法と併用することを想定している
- 単独では機能しないソリューション
認証方法を選択する際の考慮事項
JSON用の認証方法を選択する際は、
、次の点を考慮してください:
- セキュリティ要件:データはどの程度機密性が高いですか?
- クライアントのタイプ:ブラウザベース、モバイルアプリ、またはサーバー間通信ですか?
- ユーザーエクスペリエンス:ユーザーは頻繁にログインする必要がありますか?
- パフォーマンスのニーズ:認証速度はどの程度重要ですか?
- 統合の要件:サードパーティのサービスがAPIにアクセスしますか?
ベストプラクティス
- すべての認証方法で常にHTTPSを使用する
- ブラウザベースのアプリケーションに適切なCORSヘッダーを実装する
- トークン有効期限のポリシーを慎重に検討する
- 適切な場合はリフレッシュトークンを使用する
- ブルートフォース攻撃を防ぐためにレート制限を実装する
- セキュリティ監視のために認証試行をログに記録する