DrupalのJSON Web Token Authenticationモジュールを試してみます。
https://www.drupal.org/project/jwt
以下のページを参考にしました。
https://preston.so/writing/decoupled-drupal-authentication-with-json-web-tokens/
なお、類似するモジュールとして、以下があるようです。
https://www.drupal.org/project/rest_api_authentication
上記モジュールを使ったjwt認証は以下で説明されています。
https://www.drupal.org/docs/contributed-modules/api-authentication/jwt-authentication
しかし、以下の記事に記載したように、上記モジュールでjwt認証を使用するには有料プランに加入する必要があるようでした。
そこで、今回は、jwtモジュールのほうを試してみます。
インストールと有効化#
jwtモジュール
注意点として、jwtだけでなく、jwt_auth_consumerやjwt_auth_issuerも有効化する必要がありました。
restuiモジュール
以下にアクセスして、キーを作成します。
/admin/config/system/keys
Key typeとしてJWT HMAC Keyを選択して、JWT AlgorithmとしてSHA-256を選択しました。

次に、以下にアクセスして、JWTの設定を行います。
AlgorithmとしてデフォルトのSHA-256を選択して、Secretとして先ほど作成したキー(ここではjwt)を選択します。

その後、ログインした状態で、以下にアクセスしてみます。
/jwt/token
すると、以下のようなトークンが得られます。

参考までに、このトークンをjwt.ioで検証してみます。
https://jwt.io/

PAYLOADの箇所を見てみると、iat(Issued A: トークンが発行された時刻)やDrupalの「User ID」を確認することができます。
RESTリソースの設定#
以下にアクセスします。
/admin/config/services/rest
ここでは、コンテンツに対して、POSTを有効化し、認証プロバイダとしてjwt_authを選択します。


Postman#
Postmanを使って、コンテンツの作成を試してみます。
まず、Authorizationを指定せずに、コンテンツの作成試してみます。
Bodyはrawを選択して、フォーマットをJSONとします。以下の最低限のデータで、articleタイプのコンテンツの作成してみます。
POST先のURLは以下です。
{DRUPALをインストールしたパス}/node?_format=json

結果、以下のような結果が返却されます。
次に、AuthorizationでBear Tokenを選択して、先ほど取得したトークンを入力してpostしてみます。

結果、以下のようにコンテンツを作成することができました。
(参考)JSON:APIの場合#
次に、JSON:APIを使った場合の結果も確認してみます。
まずウェブサービスのJSON:APIを有効化します。

次に、/admin/config/services/jsonapiにアクセスして、すべての操作を許可します。

なお、この設定を行わずに後述するpostを行うと、以下のエラーが返却されます。
Postman#
JSON:APIを用いる場合には、以下のようなjsonデータを使ってコンテンツを作成します。
articleタイプのコンテンツを作成する場合のPOST先のURLは以下です。
{DRUPALをインストールしたパス}/jsonapi/node/article

Authorizationを指定せずに、コンテンツの作成を試みます。結果、以下のように、先ほどと同様の結果が得られます。
Authorizationを指定した場合、以下のようにコンテンツが作成されました。
まとめ#
DrupalのJWTモジュールを用いたAPIの利用例について紹介しました。
十分に考慮できていない点が多いかと思いますが、本モジュール等の使い方の参考になりましたら幸いです。