JSON Web Tokens (JWTs)
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

JWTベアラーフローの設定

JWT ベアラー フローは、外部トークン サービスからの署名済み JWT を Liferay からのアクセス トークンと交換します。 このフローを使用するには、OAuth 2 クライアントを作成し、JWT の isssub、および署名キーに一致する受信アサーション発行者を構成します。 発行者を設定したら、OAuth 2 クライアントを更新して、 JWT_BEARER 認証タイプをサポートします。 次に、トークン サービスは署名されたアサーションを Liferay のトークン エンドポイントに送信し、アサーションが有効な場合は Liferay がアクセス トークンを返します。

フローの仕組みの背景については、 認可付与としてのアサーション を参照してください。

着信アサーション発行者の構成

  1. グローバル メニュー (Applications Menu icon) を開き、 コントロール パネルインスタンス設定に移動します。

  2. OAuth 2 受信アサーション構成で、 追加をクリックします。

  3. 発行者の名前、JSON Web キー セット、およびユーザー認証タイプを入力します。

    発行者、JWKS、ユーザー認証タイプの詳細を入力します。

  4. [保存]をクリックします。

発行者の値は、発行者の JWT アサーション内の iss 値と等しくなければなりません。 ユーザー認証タイプの値は、JWT アサーション内の サブ 値と一致する必要があります。 これらの値をマップするには、トークン サービスで追加の構成が必要になる場合があります。

JSON Web キー セットは通常、トークン サービスの JWKS URI で入手できます。 たとえば、Keycloakを使用している場合、JWKS URIは次の場所で入手できます。

http://{hostname}/realms/{realm_name}/protocol/openid-connect/certs

オーディエンスクレーム要件

受信 JWT アサーションには、Liferay のトークン エンドポイントに一致する aud クレームが含まれている必要があります。 対象者が一致しない場合、Liferay は invalid_grant を返します。

ローカルインスタンスの例:

aud: http://localhost:8080/o/oauth2/token

Liferay インスタンスの正確なトークン エンドポイント URL を使用します。

aud クレームには複数の値 (JSON 配列) を含めることができます。 Liferay では、トークン エンドポイントと一致するエントリが 1 つだけ必要です。 外部 ID プロバイダーによって追加された追加のオーディエンスは無視されます。

無効な許可エラーのトラブルシューティング

invalid_grant エラーには詳細が欠けています。 特定の検証エラーを出力するロガーを追加して、どの JWT クレームが欠落しているか、または間違っているかを確認できます。

  1. グローバル メニュー (Global Menu) を開き、 コントロール パネル タブに移動して、 サーバー管理をクリックします。

  2. ログ レベル タブを開き、 新規をクリックします。

  3. ロガー名を com.liferay.oauth2.provider.rest.internal.endpoint.access.token.grant.handler に設定し、ログレベルを DEBUGに設定します。

  4. [保存]をクリックします。

このログ出力は、受信アサーション内の正確な問題を特定するのに役立ち、JWT 構成の調整が容易になります。

JWTベアラーフローの有効化

受信アサーション発行者を構成した後、クライアントの JWT ベアラー フローが有効になっていることを確認します。

  1. グローバル メニュー (Applications Menu icon) を開き、 コントロール パネルOAuth 2 管理に移動します。

  2. OAuth 2 クライアントを選択し、「許可された認証タイプ」まで下にスクロールします。

  3. JWT_BEARER チェックボックスをオンにします。

  4. [保存]をクリックします。

Liferayからアクセストークンを取得する

着信アサーション発行者を設定し、クライアントの JWT_BEARER フローを有効にすると、Liferay からアクセス トークンの取得を開始できます。

機密クライアントを使用している場合は、Liferay のトークン URL https://{hostname}/o/oauth2/token への POST リクエストを開始し、本文に次のパラメータを含める必要があります ( application/x-www-form-urlencodedとしてエンコードされます)。

client_id=YOUR_CLIENT_ID
client_secret=YOUR_CLIENT_SECRET
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=JWT assertion from the token service

以下は、Keycloak からの JWT アサーションを使用して Liferay に対して行われたトークン要求のサンプルです。 Keycloak は、Liferay の着信アサーション発行者として設定されています。

Liferay は JWT Bearer フローのアクセス トークンを発行します。