認証検証ツールの使用
認証検証機能は、Liferay DXPのAPIへのリモート呼び出しを、一元的かつ拡張可能な方法で認証します。彼らには主に2つの責任がある。
- 登録済みの
AuthVerifierインスタンスを使用して、提供された認証情報を検証します。 - 検証結果に基づいてポータル認証コンテキストを作成する
利用可能な AuthVerifier が、提供された認証情報がユーザー アカウントと一致することを判断できない場合、ゲスト ユーザーに対して認証されていないアクセスをサポートする認証コンテキストが作成されます。したがって、各APIは単一のAPIエンドポイントのみを公開します。対照的に、Liferay Portal の旧バージョン (6.2 より前) では、各 API に対して 2 つの API エンドポイントが公開されていました。 /api/endpoint URI は認証なしのアクセス用で、URI /api/secure/endpoint は認証ありのアクセス用でした。
リモート クライアントが HTTP Basic または HTTP Digest 認証を使用する場合、リクエスト パラメータに資格情報を送信する場合、認証済みの JSESSIONIDを送信する場合、または共有シークレットを使用して信頼を確立する場合など、最も一般的な状況に対応する組み込みの AuthVerifier 実装があります。その他の AuthVerifier 実装は、OSGi ランタイムにサービスとして登録される AuthVerifier インターフェイスの実装を含むモジュールとしてデプロイできます。
認証検証レイヤーの焦点は、認証情報を提供することではなく、認証を検証することにある。トークンや認証情報を発行したり、サインインポートレットを表示したりすることはありません。その代わりに、このレイヤーは既存の認証情報と認証済みセッションを検証し、認証エンドポイントを補完する役割を果たします。後方互換性を確保するため、デフォルトの実装では、ユーザー名とパスワードの認証情報を提供するリクエストをサポートしています。したがって、認証検証層は認証と認可の境界に位置する。
認証検証プロセス
認証検証器を設定するには、 コントロール パネル → システム設定 → API 認証 に移動します。

ステップ1:リクエスト認証情報を確認する
このレイヤーは、責任連鎖設計パターンを使用して、組み込みおよびサードパーティの AuthVerifier 実装の両方をサポートします。各 AuthVerifier は、マッピングされた URL やその他のプロパティを指定する構成を提供できます。
受信した各リクエストは、登録されているすべての AuthVerifierと照合され、リクエストの処理に使用される最終的な AuthVerifierのリストが選択されます。受信したリクエストの認証情報を検証するのは、各 AuthVerifier の責任です。
ステップ2:認証コンテキストを作成する
リクエストが一致するすべての AuthVerifierによって処理されると、Liferay DXP は解決されたユーザーの認証コンテキストを作成します。
これには、 HttpServletRequest remoteUser を解決されたユーザー ID を返すように設定し、 ThreadLocalを解決されたユーザーに設定することが含まれます。
解決されたユーザーは、 AuthVerifier インスタンスのいずれかによって返されたユーザー、または提供された認証情報を検証できるインスタンスがなかった場合はゲストユーザーになります。
組み込み認証検証機能の設定
開発者は AuthVerifierを作成し、Liferay は OSGi ランタイムに登録されると自動的にそれらを処理します。 AuthVerifierFilter クラスは、 javax.servlet.Filter インターフェースを実装し、このレイヤーを提供します。 Liferay DXPには、API認証カテゴリで13種類の構成が用意されています。そのうち 6 つは AuthVerifierを構成します。: 基本認証ヘッダー、ダイジェスト認証、イメージ要求、ポータルセッション、要求パラメータ、およびトンネル認証。残りの7つは、自動ログイン、HTTPトンネルエクステンダー、基本認証プロトコルのサポート、サービスアクセスポリシー、およびサービスアクセスクォータに関するものです。
- 自動ログインベーシック認証ヘッダ
- 自動ログイン・リクエストヘッダー
- 自動ログイン・リクエストパラメータ
- 基本認証ヘッダー*
- ベーシック認証プロトコルのサポート
- ダイジェスト認証
- HTTPトンネルエクステンダー
- 画像リクエスト*
- ポータルセッション*
- リクエストパラメータ
- サービス・アクセス・ポリシー
- サービスアクセス・クォータ
- トンネル認証*
アスタリスク(*)が付いている設定は、デフォルトで有効になっています。基本認証ヘッダーとポータルセッションは、出荷時の状態でリモートAPIアクセスに機能します。イメージ要求とトンネル認証は、Liferay DXP サーバーに限定されています。これは、 Hosts Allowed フィールドのデフォルト値が 127.0.0.1,SERVER_IP となっているためです。
PunchOut2GoアプリへのLiferay Commerceコネクタは、このカテゴリに「自動ログインパンチアウトアクセストークン」という設定項目を追加します。
Basic認証ヘッダー
この認証検証機能を使用すると、リモート クライアントは HTTP 基本認証 を使用して認証できます。この方法で認証されるべきURLパスを指定することで設定できます。基本認証を強制する フィールドがチェックされている場合、HTTP 基本認証が必要です。
デフォルトの URL は、Web サービスの場合 /api/*,/xmlrpc* です。マッピングは /api/liferay* を除外して、 TunnelServlet へのアクセスを防止します。 TunnelServlet リクエストを認証する認証検証器については、 TunnelAuthentication Verifiers を参照してください。
ダイジェスト認証
この認証検証機能は、Liferay DXP 7.4以降非推奨となり、直接の代替機能はありません。
この認証検証機能を使用すると、リモート クライアントは HTTP ダイジェスト認証 を使用して認証できます。この方法で認証されるべきURLパスを指定することで設定できます。強制ダイジェスト認証 フィールドがチェックされている場合、HTTP ダイジェスト認証が必要です。
この認証検証機能はデフォルトでは有効になっていません。
HTTPトンネルエクステンダー
Liferay がモジュール性を採用したため、このエクステンダーはモジュールを TunnelServlet の一部にできるようにするために作成されました。これは、 TunnelServlet と TunnelingServletAuthVerifier をモジュールサーブレットコンテキストにマッピングします。マニフェストに Http-Tunnel を含むモジュールは、トンネルサーブレットを利用でき、 /o/_module_/api/liferay/do を介して API を公開できます。
許可されたホスト フィールドに、トンネル接続を許可するクライアント IP アドレスを入力します。デフォルトの 255.255.255.255はどのクライアントにも一致しないため、これを置き換えるまでどのホストもトンネル接続できません。空欄には任意のアドレスが入力できます。 tunnel.servlet.hosts.allowed ポータルプロパティ は、トンネルサーブレット自体を制限する別の設定です。そのプロパティについては トンネルサーブレット を、リモート公開については リモートライブステージングの構成 を参照してください。
これはリモートAPIをエクスポートする推奨方法ではありません。JAX-RSまたはLiferay JSON Web Serviceテクノロジーを使用してリモートサービスを公開する方がはるかに優れています。
画像リクエスト認証検証ツール
LibreOffice/OpenOfficeに接続している場合、OfficeプロセスはLiferay DXPから画像をダウンロードして、画像を含むドキュメントを表示する必要があります。これを行うには、画像に安全にアクセスするための JWT トークン が作成されます。
Hosts Allowed、 URLs Includes、および URLs Excludes フィールドを設定することで、これを設定します。
この認証検証機能はデフォルトで有効になっていますが、アクセスはLiferay DXPサーバー自体に限定されています。その Hosts Allowed フィールドのデフォルト値は 127.0.0.1,SERVER_IP で、その URLs Includes フィールドは /documents/*,/image/*,/c/wiki/get_page_attachment です。
ポータルセッションAuth Verifiers
ブラウザ内のJavaScriptを有効にし、既存のポータルセッションを使用してLiferay JSON Webサービスにアクセスできるようにします。
デフォルト設定では、URL に含まれるフィールドは、従来の JSON リモート サービス レイヤーへのアクセスをシールドします: /api/json*,/api/jsonws*,/c/portal/json_service*。
パラメータのAuth Verifiersを要求する
RequestParameterAutoLogin との下位互換性のために、HTTP リクエスト パラメータ parameterAutoLoginLogin および parameterAutoLoginPassword 内の資格情報を使用してポータル エンドポイントを認証およびアクセスできます。
この認証検証機能はデフォルトでは有効になっていません。
トンネル認証検証
TunnelServlet は、ポータルのリモート サービスへのアクセスを提供するために、 /api/liferay/do にマッピングされたレガシー リモート API エンドポイントです。トンネル認証検証機能は、信頼できるリモートクライアントに対し、送信する任意のユーザーIDに基づいてアクセス権を付与します。
信頼できるリモートクライアントの一例として、ステージング環境におけるリモート公開機能が挙げられます。
信頼できるリモート クライアントは、ポータル プロパティ tunneling.servlet.shared.secretに格納されている共有シークレットを使用して認証します。これは HTTP トンネリング に記載されています。デフォルト値は空欄で、すべてのアクセスを禁止します。
この認証検証機能はデフォルトで有効になっていますが、 ホスト許可 フィールドのデフォルト値は 127.0.0.1,SERVER_IPとなっているため、Liferay DXP サーバーのみが使用できます。他のクライアントがトンネル接続できるようにするには、そのクライアントのIPアドレスをそのフィールドに追加してください。リモート公開については、 リモートライブステージングの設定 を参照してください。