logo

パレット - カラフルに🎨

Palette — ビジュアルページビルダー、デザインの専門知識は不要です。

ライブデモ パレットをダウンロード

Scroll

認証、セキュリティ、およびパフォーマンス

04/04/2025, by Ivan

DrupalのJSON:API モジュールは、コンテンツをAPIとして公開する強力な方法を提供しますが、セキュリティと使いやすさには、適切な認証方法を選択することが不可欠です。このレビューでは、DrupalのJSONモジュールを扱う際に利用できるさまざまな認証オプションを探ります。

コアの認証方法

 Drupal REST & JSON API Authenticationモジュール は、次のようなさまざまな認証方法を使用して、DrupalサイトのAPIへの無許可アクセスを制限し、保護します:

このモジュールは、ヘッドレス/デカップルドのDrupal構成でAPIコールを認証することも可能にします。

  1. 基本認証(Basic Authentication)
  2. APIキーに基づく認証
  3. アクセストークン/OAuthに基づく認証
  4. JWTトークンに基づく認証
  5. サードパーティプロバイダーのトークン認証

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用の認証方法を選択する際は、

、次の点を考慮してください:

  1. セキュリティ要件:データはどの程度機密性が高いですか?
  2. クライアントのタイプ:ブラウザベース、モバイルアプリ、またはサーバー間通信ですか?
  3. ユーザーエクスペリエンス:ユーザーは頻繁にログインする必要がありますか?
  4. パフォーマンスのニーズ:認証速度はどの程度重要ですか?
  5. 統合の要件:サードパーティのサービスがAPIにアクセスしますか?

ベストプラクティス

  • すべての認証方法で常にHTTPSを使用する
  • ブラウザベースのアプリケーションに適切なCORSヘッダーを実装する
  • トークン有効期限のポリシーを慎重に検討する
  • 適切な場合はリフレッシュトークンを使用する
  • ブルートフォース攻撃を防ぐためにレート制限を実装する
  • セキュリティ監視のために認証試行をログに記録する