DrupalでJWT認証を設定する
当学校区の Drupal API認証 このモジュールは、JSON Web Token(JWT)を使用してAPIリクエストを安全に認証します。まず、Drupalユーザー名とパスワードが検証され、署名済みのJWTトークンが生成されます。このトークンはクライアントに返されます。このトークンは、有効期限が切れるまでDrupal APIへのアクセスに使用できます。JWTは、署名と検証にHSAとRSAの両方のアルゴリズムをサポートしています。このモジュールは、Drupal 8、Drupal 9、Drupal 10、Drupal 11と完全に互換性があります。
- コンポーザの使用
- ドラッシュを使用する
- 手動インストール
前提条件:
- REST UI: このモジュールは、REST モジュールを構成するためのユーザーフレンドリーなインターフェースを提供します。
- 次のWebサービスモジュールを有効にします。 延長 Drupal サイトのセクション (/admin/modules) :
- JSON:API
- REST UI
- RESTful Web サービス
- 連載
API を有効にしてメソッドを割り当てます。
- 最初のステップは、APIを有効にし、そのAPIで許可されるメソッドと操作を割り当てることです。これは、 REST UI モジュールを使用するか、Drupal 構成を直接変更します。
- 以下を行うには、 APIを有効にする
- REST UIモジュールを使用してAPIを有効にするには、 構成 ボタン(下記参照)をクリックします。
- この例では、 /エンティティ/ユーザー API を有効にします。これを行うには、その前に表示されている [有効にする] オプションをクリックします。
- 私たちの目標は Drupal でユーザーを作成することなので、次の構成を選択します。
- 方法: POST
- フォーマット: JSONの
- 認証プロバイダー: REST API 認証
- これにより、miniOrange API認証モジュールがAPIを認証できるようになります。 設定を保存 続行するにはボタンを押します。
構成手順
1. JWT認証方法の設定:
- このステップでは、API認証方法としてJWTを設定します。これを行うには、 API認証 モジュールのタブ (/admin/config/people/rest_api_authentication/auth_settings)。
- 基本構成、有効にする 認証を有効にする トグル。
- 入力する アプリケーション名 をクリックして JWT 認証方法 のセクションから無料でダウンロードできます。
- 下にスクロールして JWT構成 同じタブのセクション。
- 「ユーザー名属性」フィールドに、Drupal ユーザー名を含む受信した JWT の属性名を入力します。
- 選択する 署名アルゴリズム をドロップダウンから選択します。
- オプション: 希望する有効期限(分単位)を入力します。 トークンの有効期限.
- JWKS URI: 外部 JWT トークンを使用する場合は、JWKS URI を指定して Drupal で検証します。
- 証明書/秘密鍵: RS256 を選択した場合は証明書を提供し、HS256 を選択した場合は秘密キーを提供します。
- 秘密鍵: JWT の秘密鍵を入力するか、新しい鍵を生成します。
- 公開鍵: JWT の公開キーを入力するか、新しいキーを生成します。
- クリック 構成の保存
- JWT 認証方法が正常に構成されました。
- まず、API呼び出しを行ってJWTを取得する必要があります。その後、そのトークンを使用してDrupal APIを認証し、ユーザーを作成します。
- JWTを取得するには、ユーザーのDrupalユーザー名とパスワードを含むPOSTリクエストを送信する必要があります。ユーザー名とパスワードはbase64エンコード形式で送信する必要があります。リクエスト形式については、以下のフォーマットをご参照ください。
外部 JWT の場合:
カスタムキーの生成:
注意: キーは手動で入力するか、生成することができます。これらのキーは、JWTトークンの署名と検証に使用されます。
注意: API を認証するときに、アプリケーション固有の一意のヘッダーを使用します。
リクエスト: POST /rest_api/id_token ヘッダー: Accept: application/json 認証: Basic base64encoded CURL リクエスト形式 - curl --location --request POST ' /rest_api/id_token' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic base64encoded '
- 成功した応答は、JWT とそのトークンの有効期限を返します。 (下の画像を参照してください)
2。 例:
- 理解を深めるために、JWT トークンを使用して REST API で Drupal にユーザーを作成する例を見てみましょう。
- Drupalでユーザーを作成するには、受信したJWTまたは外部JWTをAuthorizationヘッダーのベアラートークンとしてPOSTリクエストを送信する必要があります。呼び出し方法については、以下の例を参照してください。
注意: Drupal の /entity/user API は、新しいユーザーを作成するために使用されます。
HTMLリクエストフォーマット - リクエスト: POST /entity/user?_format=json ヘッダー: AUTH-METHOD: application_id Accept: application/json Content-Type: application/json Authorization: Bearer received_JWT 本文: { "name": { "value": " " }, "メール": { "値": " " }, "pass": { "value": " " }, "status": { "value": "1" } } CURLリクエストフォーマット - curl --location --request POST ' /entity/user?_format=json' \ --header 'AUTH-METHOD: application_id' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --header 'Authorization: Authorization: Bearer ' \ --data-raw ' { "name": [ { "value": "ユーザー名" } ], "mail": [ { "value": "メールアドレス" } ], "pass": [ { "value": "パスワード" } ], "status": [ { "value": "1" } ] }
- 成功した場合、作成したユーザーの詳細が返されます (下の画像を参照)。
おめでとうございます!Drupal API 認証モジュールを使用して JWT 認証方式を正常に設定しました。
設定が成功しなかった場合は、 drupalsupport@xecurify.comエラーウィンドウのスクリーンショットを添付していただければ、問題の解決をお手伝いし、セットアップ手順をご案内いたします。
