logo

パレット - カラフルに🎨

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

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

Scroll
11/04/2025, by Ivan

IDプロバイダーを使用してDrupal REST APIへのアクセスを保護・制限したい場合は、外部IDプロバイダー認証方法を選択してください。 

外部IDプロバイダーを使用したDrupal API認証では、Google、Azure AD、Keycloak、Okta、Gitlabなどのサードパーティーから受け取ったトークンを使用して、Drupal REST APIに安全にアクセスします。

この方法では、IDプロバイダーが提供するユーザー情報エンドポイントと、IDプロバイダーのユーザー名属性をモジュールに設定する必要があります。そうすれば、プロバイダーが提供するトークンを使用してすべてのDrupal APIリクエストを認証できます。 Drupal REST API モジュールは、受け取ったユーザー資格情報をDrupalユーザーアカウントと照合します。 このモジュールはDrupal 7、Drupal 8、Drupal 9、Drupal 10、Drupal 11と互換性があります。

 ダウンロード 

セットアップ動画:

前提条件:ダウンロードとインストール:

  • Drupal REST & JSON API Authentication モジュールをダウンロードしてインストールします。
  • REST UI:このモジュールは、RESTモジュールを設定するためのユーザーインターフェースを提供します。 
  • DrupalサイトのExtendセクション(/admin/modules)から以下のWebサービスモジュールを有効にします:
    • REST UI
    • RESTful Web Services
    • Serialization
    install modules

外部アプリケーション/IDプロバイダーを使用したAPI認証のセットアップ手順:

  • 理解を深めるため、DrupalのCreate User APIに外部IDプロバイダーベースの認証を追加する例を見ていきます。
  • Drupalの /entity/user APIがDrupalでユーザーを作成するために使用されることに注意してください。

APIを有効にして、メソッドと操作を次のように割り当てます:

  • 最初のステップは、APIを有効にし、その特定のAPIで許可されるメソッドと操作を割り当てることです。これはREST UIモジュールを使用して行うか、設定を直接変更することで行えます。
  • REST UI モジュールを使用してAPIを有効にするには、REST UIモジュールのConfigureボタンをクリックします(下図参照) REST UI
  • この例では、Userセクションにある/entity/user APIを有効にする必要があります。その前にあるEnableオプションをクリックしてこのAPIを有効にします。
    Add node
  • 目標はDrupalでユーザーを作成することなので、以下の設定を選択します:
    • メソッド:POST
    • フォーマット:json
    • 認証プロバイダー:rest_api_authentication
  • rest_api_authentication を選択すると、miniOrange REST API AuthenticationモジュールがAPIを認証できるようになります。Save Configurationボタンをクリックして続行します。 Resource content

Drupal REST API Authenticationモジュールの設定:

  • このステップでは、外部IDプロバイダーをAPI認証方法として設定します。そのために、REST API AuthenticationモジュールのAPI Authenticationタブに移動します (/admin/config/people/rest_api_authentication/auth_settings)
    • Enable Authenticationチェックボックスを選択し、Save Settingsをクリックします。
    • Save Settingsボタンの下で、External Identity Providerラジオボタンを選択します。
    • User Info Endpointテキストフィールドに、IDプロバイダーのユーザー情報エンドポイントを入力します。モジュールが提供されたトークンを使用してユーザーの情報を取得できるようにするためです。
    • また、Username Attributeには、外部プロバイダーがユーザー名を送信するIDプロバイダーの属性キー/名前を入力します。
      External authentication

Drupalのユーザーを作成する権限をDrupalロールに付与します: 

  • 必要であれば、Drupalサイトの権限セクション(/admin/people/permissions)にあるAdminister users権限にDrupalロールを割り当てることで、非管理者のDrupalロールにもDrupalでユーザーを作成する権限を付与できます。
    Add permissions

これで完了です!!!

  • それでは、認証に外部IDプロバイダーを使用して、API呼び出しを通じてDrupalでユーザーを作成してみましょう。

例:

  • Drupalでユーザーを作成するには、IDプロバイダーから受け取ったTokenとともにPOSTリクエストを送信する必要があります。

    リクエスト:  POST  <your_drupal_base_url>/entity/user?_format=json
    ヘッダー:   Token: <Token_receievd_from_external_identity_provider>
                    Accept: application/json
                    Content-Type: application/json

    ボディ:  {
        "name": [
            {"value": "<username>"}
        ],
        "mail": [
            {"value": "<email>"}
        ],
        "pass":[
            {"value": "<password>"}
        ],
        "status":[
            {"value": "1"}
        ]
    }

    CURLリクエスト形式-

    curl --location --request POST  `<your_drupal_base_url>/entity/user?_format=json' \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Token: <Token_receievd_from_external_identity_proider>' \
    --data-raw '{
        "name": [
            {"value": "Username"}
        ],
        "mail": [
            {"value": "email"}
        ],
        "pass":[
            {"value": "Password"}
        ],
        "status":[
            {"value": "1"}
        ]
    }'

  • 以下に追加されたPostmanリクエストの画像も参照できます:

    postman

  • 成功すると、作成したユーザー情報がレスポンスで返されます。(下の画像を参照)

    Postman response

  • レスポンスでエラーが発生した場合は、以下の表を参照してエラーの説明と可能な解決策を確認できます。

エラーレスポンス:

エラー 説明
INVALID_USER_INFO_ENDPOINT モジュール設定で誤ったユーザー情報URLを指定した場合に、このエラーが発生します。
INVALID_USERNAME_ATTRIBUTE モジュール設定で誤ったユーザー名属性を指定した場合、またはユーザー名の取得中にエラーが発生した場合に、このエラーが発生します。
INVALID_TOKEN 提供したトークンが正しくない場合、またはヘッダーにトークンが存在しない場合に、このエラーが発生します。

Drupal Documentationからの記事。