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

秘密鍵 JWT (JSON Web Token) の使用

Liferay は、OAuth 2 クライアントの認証方法として秘密鍵 JWT をサポートしています。 このフローでは、クライアント自体がアサーションを作成します。 Liferay は、JWT アサーションをデコードし、クライアントの公開キーを使用して署名を検証することでクライアントを認証します。

秘密鍵JWTを使用する利点

  • 共有シークレットがないため、基本的なクライアント ID + シークレットやクライアント シークレット JWT 認証を使用するよりも安全です。 クライアントは、秘密鍵を使用して署名された JWT アサーションを生成します。 サーバーはクライアントの公開鍵を使用して署名を検証します。
  • 非対称キー署名の使用により、より強力な否認防止機能を提供します。 サーバーは署名を検証した後、クライアントの送信元を確認できます。
  • サーバーはクライアントシークレットを保存する必要はありません。
  • キーを変更するには、サーバーはクライアントからの公開キーを変更する必要があります。

OAuth 2 クライアントの作成

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

  2. 新規をクリックします。

  3. 名前と関連するコールバック URI を入力します。

  4. クライアント認証方法ドロップダウンで、 秘密キー JWTを選択します。

  5. JSON Web Key Set 入力に、クライアントの JWKS を貼り付けます。 これは、クライアントの秘密鍵を使用して署名された JWT アサーションを検証するために使用されるクライアントの公開鍵です。

  6. 許可された承認タイプで クライアント資格情報 を選択します。

    クライアントがユーザーからの承認を必要とする場合は、承認コード フローを選択できます。 クライアント資格情報フローではユーザーの介入は必要ありません。

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

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

クライアントが秘密鍵 JWT を使用するように設定したら、Liferay からアクセス トークンの取得を開始できます。 機密クライアントを使用する場合は、Liferay のトークン URL https://{hostname}/o/oauth2/token への POST リクエストを開始する必要があります。その際、本文には次のパラメータを指定します ( application/x-www-form-urlencodedとしてエンコードされます)。

client_id=YOUR_CLIENT_ID
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
client_assertion=JWT generated by the client
grant_type=client_credentials

以下は、クライアント アプリケーションからの JWT アサーションを使用して Liferay に対して行われたトークン要求のサンプルです。

秘密鍵 JWT クライアント認証方式を使用して Liferay からアクセス トークンを取得します。

アサーションクラフト

クライアントアサーションは次の条件を満たしている必要があります。

  • JWT の aud フィールドは、Liferay のトークン URL https://{hostname}/o/oauth2/tokenと一致する必要があります。
  • JWTの iss および sub フィールドは、Liferay OAuth 2クライアントのクライアントIDと一致する必要があります。
  • アサーションには有効期限を定義する exp クレームが必要です。